Excel 将VBA导出为XML,字符串包含<&引用;
我需要VBA创建的XML文件包含“我认为问题在于Excel 将VBA导出为XML,字符串包含<&引用;,excel,xml,vba,Excel,Xml,Vba,我需要VBA创建的XML文件包含“我认为问题在于sActor包含标记,因此createTextNode(sActor)将对进行编码,我认为您可以通过将其包装在回勾中来显示这些标记:家庭成员。您所说的“导出”是什么意思"? 您正在使用SaveAsXMLData吗?再详细一点会有帮助;)在这里的其他人的帮助下,我创建了一个宏,从每一行创建XML文件-一切正常,我只需要一种显示方式“给wazz——我刚刚试过,但它仍然会导出它。sameIt没有任何好处,无法将我们指向其他帖子的代码,因为我们看不到您是如
sActor
包含标记,因此createTextNode(sActor)
将对进行编码,我认为您可以通过将其包装在回勾中来显示这些标记:家庭成员
。您所说的“导出”是什么意思"? 您正在使用SaveAsXMLData吗?再详细一点会有帮助;)在这里的其他人的帮助下,我创建了一个宏,从每一行创建XML文件-一切正常,我只需要一种显示方式“给wazz——我刚刚试过,但它仍然会导出它。sameIt没有任何好处,无法将我们指向其他帖子的代码,因为我们看不到您是如何使用它的。此外,您的XML格式不好-
不应包含空格,而应为
。不正确的空格可能导致元素被解释为文本而不是XML。@game您需要将wb.Sheets(“Sheet1”)
更改为您的工作表,看起来应该是Sheet3
@game标签名及其列号都在数组中“title:683”
@game没问题,我已更新我的答案,将文件放在工作簿文件夹中,并跳过那些没有有效文件名的行。@game Changefso.createTextFile(sFolder&sFile&“.nfo”,1,1)
改为fso.createTextFile(sFolder&sFile&“.nfo”,1,0)
。1表示Unicode编码。XML文件中的空白不重要。让我们来看看。
sTemplateXML = _
" <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 + _
" <tag/>" + vbNewLine + _
" <actor/>" + vbNewLine + _
" </movie>" + 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
sFolder = .Cells(lRow, 677).Value
sFile = .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
sTag = .Cells(lRow, 692).Value
sActor = .Cells(lRow, 693).Value
doc.LoadXML sTemplateXML
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("tag")(0).appendChild doc.createTextNode(sTag)
doc.getElementsByTagName("actor")(0).appendChild doc.createTextNode(sActor)
doc.Save sFolder & sFile & ".nfo"
Next
End With