我遵循这个答案(将电子表格的行转换为单独的XML文件),但是我收到一个错误,告诉我没有定义对象。我很抱歉,因为我是VBA新手。
我的表格遵循代码中显示的顺序,例如。
产生错误的代码是:
Sub testXLStoXML()
sTemplateXML = _
"<xml_version>" + vbNewLine + _
"<xml_movie>" + vbNewLine + _
"<plot>" + vbNewLine + _
"<xml_outline>" + vbNewLine + _
"<xml_lockdata>" + vbNewLine + _
"<dateadded>" + vbNewLine + _
"<title>" + vbNewLine + _
"<rating>" + vbNewLine + _
"<year>" + vbNewLine + _
"<sorttile>" + vbNewLine + _
"<mpaa>" + vbNewLine + _
"<premiered>" + vbNewLine + _
"<releasedate>" + vbNewLine + _
"<runtime>" + vbNewLine + _
"<studio>" + vbNewLine + _
"<1>" + vbNewLine + _
"<2>" + vbNewLine + _
"<3>" + vbNewLine + _
"<folder>" + vbNewLine + _
"</data>" + vbNewLine
Set doc = CreateObject("MSXML2.DOMDocument")
doc.async = False
doc.validateOnParse = False
doc.resolveExternals = False
With ActiveWorkbook.Worksheets(1)
lLastRow = .UsedRange.Rows.Count
For lRow = 2 To lLastRow
sFile = .Cells(lRow, 2).Value
sXml_version = .Cells(lRow, 677).Value
sXml_movie = .Cells(lRow, 678).Value
sPlot = .Cells(lRow, 679).Value
sXml_outline = .Cells(lRow, 680).Value
sXml_lockdata = .Cells(lRow, 681).Value
sDateadded = .Cells(lRow, 682).Value
sTitle = .Cells(lRow, 683).Value
sRating = .Cells(lRow, 684).Value
sYear = .Cells(lRow, 685).Value
sSorttile = .Cells(lRow, 686).Value
sMpaa = .Cells(lRow, 687).Value
sPremiered = .Cells(lRow, 688).Value
sReleasedate = .Cells(lRow, 689).Value
sRuntime = .Cells(lRow, 690).Value
sStudio = .Cells(lRow, 691).Value
s1 = .Cells(lRow, 692).Value
s2 = .Cells(lRow, 693).Value
s3 = .Cells(lRow, 694).Value
sFolder = .Cells(lRow, 800).Value
doc.LoadXML sTemplateXML
doc.getElementsByTagName("xml_version")(0).appendChild doc.createTextNode(sXml_version)
doc.getElementsByTagName("xml_movie")(0).appendChild doc.createTextNode(sXml_movie)
doc.getElementsByTagName("plot")(0).appendChild doc.createTextNode(sPlot)
doc.getElementsByTagName("xml_outline")(0).appendChild doc.createTextNode(sXml_outline)
doc.getElementsByTagName("xml_lockdata")(0).appendChild doc.createTextNode(sXml_lockdata)
doc.getElementsByTagName("dateadded")(0).appendChild doc.createTextNode(sDateadded)
doc.getElementsByTagName("title")(0).appendChild doc.createTextNode(sTitle)
doc.getElementsByTagName("rating")(0).appendChild doc.createTextNode(sRating)
doc.getElementsByTagName("year")(0).appendChild doc.createTextNode(sYear)
doc.getElementsByTagName("sorttile")(0).appendChild doc.createTextNode(sSorttile)
doc.getElementsByTagName("mpaa")(0).appendChild doc.createTextNode(sMpaa)
doc.getElementsByTagName("premiered")(0).appendChild doc.createTextNode(sPremiered)
doc.getElementsByTagName("releasedate")(0).appendChild doc.createTextNode(sReleasedate)
doc.getElementsByTagName("runtime")(0).appendChild doc.createTextNode(sRuntime)
doc.getElementsByTagName("studio")(0).appendChild doc.createTextNode(sStudio)
doc.getElementsByTagName("1")(0).appendChild doc.createTextNode(s1)
doc.getElementsByTagName("2")(0).appendChild doc.createTextNode(s2)
doc.getElementsByTagName("3")(0).appendChild doc.createTextNode(s3)
doc.getElementsByTagName("folder")(0).appendChild doc.createTextNode(sFolder)
doc.Save sFile
Next
End With
End Sub
突出显示的错误是“doc.getElementsByTagName(“xml\u版本”)(0)。appendChild doc.createTextNode(sXml\u版本)”
虽然这可能只是第一个顺序。
我想做的是-这是针对每一个不为null的行
最后3个是斜体的,因为我还没有想到要这样做,因为它不在示例中。我甚至不知道在代码中把文件夹值放在哪里,例如,它是否可以像我所做的那样与其他列一起列出。我也不知道我是否需要模板中的“/数据”。
澄清一下,这是为了自动生成NFO文件,以便媒体系统读取为元数据。我有很多面向家庭的视频文件,所以没有元数据网站来获取数据。
编辑:
更新的代码-此代码有效!
Sub Export()
sTemplateXML = _
"<data>" + vbNewLine + _
" <_version/>" + vbNewLine + _
" <_movie/>" + vbNewLine + _
" <plot/>" + vbNewLine + _
" <_outline/>" + vbNewLine + _
" <_lockdata/>" + vbNewLine + _
" <dateadded/>" + vbNewLine + _
" <title/>" + vbNewLine + _
" <rating/>" + vbNewLine + _
" <year/>" + vbNewLine + _
" <sorttile/>" + vbNewLine + _
" <mpaa/>" + vbNewLine + _
" <premiered/>" + vbNewLine + _
" <releasedate/>" + vbNewLine + _
" <runtime/>" + vbNewLine + _
" <studio/>" + vbNewLine + _
" <_1/>" + vbNewLine + _
" <_2/>" + vbNewLine + _
" <_3/>" + vbNewLine + _
"</data>" + vbNewLine
Set doc = CreateObject("MSXML2.DOMDocument")
doc.async = False
doc.validateOnParse = False
doc.resolveExternals = False
With Sheets("Sheet3")
lLastRow = .UsedRange.Rows.Count
For lRow = 3 To lLastRow
sFile = .Cells(lRow, 2).Value
s_version = .Cells(lRow, 677).Value
s_movie = .Cells(lRow, 678).Value
sPlot = .Cells(lRow, 679).Value
s_outline = .Cells(lRow, 680).Value
s_lockdata = .Cells(lRow, 681).Value
sDateadded = .Cells(lRow, 682).Value
sTitle = .Cells(lRow, 683).Value
sRating = .Cells(lRow, 684).Value
sYear = .Cells(lRow, 685).Value
sSorttile = .Cells(lRow, 686).Value
sMpaa = .Cells(lRow, 687).Value
sPremiered = .Cells(lRow, 688).Value
sReleasedate = .Cells(lRow, 689).Value
sRuntime = .Cells(lRow, 690).Value
sStudio = .Cells(lRow, 691).Value
sFolder = .Cells(lRow, 3).Value
s_1 = .Cells(lRow, 692).Value
s_2 = .Cells(lRow, 693).Value
s_3 = .Cells(lRow, 694).Value
doc.LoadXML sTemplateXML
doc.getElementsByTagName("_version")(0).appendChild doc.createTextNode(s_version)
doc.getElementsByTagName("_movie")(0).appendChild doc.createTextNode(s_movie)
doc.getElementsByTagName("plot")(0).appendChild doc.createTextNode(sPlot)
doc.getElementsByTagName("_outline")(0).appendChild doc.createTextNode(s_outline)
doc.getElementsByTagName("_lockdata")(0).appendChild doc.createTextNode(s_lockdata)
doc.getElementsByTagName("dateadded")(0).appendChild doc.createTextNode(sDateadded)
doc.getElementsByTagName("title")(0).appendChild doc.createTextNode(sTitle)
doc.getElementsByTagName("rating")(0).appendChild doc.createTextNode(sRating)
doc.getElementsByTagName("year")(0).appendChild doc.createTextNode(sYear)
doc.getElementsByTagName("sorttile")(0).appendChild doc.createTextNode(sSorttile)
doc.getElementsByTagName("mpaa")(0).appendChild doc.createTextNode(sMpaa)
doc.getElementsByTagName("premiered")(0).appendChild doc.createTextNode(sPremiered)
doc.getElementsByTagName("releasedate")(0).appendChild doc.createTextNode(sReleasedate)
doc.getElementsByTagName("runtime")(0).appendChild doc.createTextNode(sRuntime)
doc.getElementsByTagName("studio")(0).appendChild doc.createTextNode(sStudio)
doc.getElementsByTagName("_1")(0).appendChild doc.createTextNode(s_1)
doc.getElementsByTagName("_2")(0).appendChild doc.createTextNode(s_2)
doc.getElementsByTagName("_3")(0).appendChild doc.createTextNode(s_3)
doc.Save sFolder & sFile & ".NFO"
Next
End With
End Sub
我不确定最后一行,但我收到和错误只有doc.save,我已经尝试了每一个组合(例如"doc.savesFile","doc.savesFile
从技术上讲,您应该在加载XML时收到一个错误(除非它返回一个空的文档),因为您的模板XML字符串由于各种原因格式不正确:
>
没有正确的root。您关闭
并非所有节点都关闭。尝试添加自动关闭标记,以便以后可以在其中附加文本节点。
根据XML规范规则,节点名称不能以数字开头,也不能以XML关键字开头。
[定义:名称是具有一组受限初始字符的NmToker。]不允许的名称初始字符包括数字、变音符号、句号和连字符。
以字符串“xml”开头的名称,或以任何匹配的字符串(('X’|'X’)('M’|'M’)('L’|'L’)开头的名称,保留用于本规范或本规范未来版本中的标准化。
考虑以下调整,对禁止的节点名称使用下划线开头:
sTemplateXML = _
"<data>" + vbNewLine + _
" <_xml_version/>" + vbNewLine + _
" <_xml_movie/>" + vbNewLine + _
" <plot/>" + vbNewLine + _
" <xml_outline/>" + vbNewLine + _
" <xml_lockdata/>" + vbNewLine + _
" <dateadded/>" + vbNewLine + _
" <title/>" + vbNewLine + _
" <rating/>" + vbNewLine + _
" <year/>" + vbNewLine + _
" <sorttile/>" + vbNewLine + _
" <mpaa/>" + vbNewLine + _
" <premiered/>" + vbNewLine + _
" <releasedate/>" + vbNewLine + _
" <runtime/>" + vbNewLine + _
" <studio/>" + vbNewLine + _
" <_1/>" + vbNewLine + _
" <_2/>" + vbNewLine + _
" <_3/>" + vbNewLine + _
" <folder/>" + vbNewLine + _
"</data>" + vbNewLine
对于文件名处理,只需在
doc中连接所需的部分。保存
调用将在没有警告的情况下替换文件。
doc.Save SFolder & "\" & sFile & ".NFO"
我几乎完成了一个大型宏的构建,但我遇到了最后的绊脚石。我制作了一个带有期望值的工作表,现在需要将其导出为XML格式。我只需要导出这个名为“Output”的特定工作表。当我导出为文本时存在问题,因此必须创建一个Sub exportToXML以删除导出时产生的一些引号。这工作正常。但是当我导出时,我必须手动输入我想要的目录和文件名在输出文件上,这不好。目录可能会不时更改,文件名也会更改。 错误转到En
问题内容: 我想通过php将MYSQL数据导出到Excel / CSV。这样我以后可以使用我的数据库,或者有人可以使用和理解它。 问题答案: 我想这就是你要找的 您可以通过检查以下地址来创建自己的文件:http : //www.programmingfacts.com/export-mysql-data-into- excelcsv-via-php/ 我不能在这里添加工作代码,这是错误的= / 但
我正在尝试将JTable导出到Microsoft Excel可用的文件中。 最初,我将数据写入一个文本文件,并将扩展名设置为“.xls” 我们非常感谢任何帮助和洞察力。可能还值得一提的是,tables模型是一个自定义模型。
问题内容: 我想通过单击表单中的按钮将查询结果导出到excel文件。 为此,我使用了这段代码,并且效果很好: 但是我的查询使用了两个参数 sdate 和 edate ,我不想访问询问我这些值,但是我希望用户在带有适当文本框的表单中输入它们。 所以我在DoCMD.OutputTo之前的代码中添加了此位 但不幸的是,它不起作用。在导出之前如何将参数放入查询中? 问题答案: 如果您想保持原始参数查询的完
我想将股票图表ohlc导出到Excel 我正在使用EPPlus,现在我知道EPPlus不支持绘制股票图表,因此我正在寻找另一个第三方dll,我找到了aspose,但它是一种付费功能。 有人能推荐其他方法导出股票图表用C#代码在Excel中创建股票图表吗? 或者它是可能的创建股票图表ohlc在Excel由C#由EPPlus? 当使用aspal时,我需要在bw代码中使用它,在我保存aspal工作簿的时
本文向大家介绍POI通过模板导出EXCEL文件的实例,包括了POI通过模板导出EXCEL文件的实例的使用技巧和注意事项,需要的朋友参考一下 一般的EXCEL导出使用POI先创建一个HSSFWorkbook,然后通过不断创建HSSFRow,HSSFCell后设置单元格内容便可以完成导出。 这次在项目中需要用到模板,导出的内容包括(1.模板中的内容、样式。2.自己需要新增的内容、样式。),还需要设置单