I need XML files created by VBA to contain "<" in a string. Currently VBA turns all instances of "<" into "&It;" as this characters is used for tags.
I believe something needs to added towards the end of the code to find and replace all instances of "&It;" to "<".
My Code
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
I've tried
- strXml = VBA.Replace(strXml, "&", "&") {before doc.save - no errors but nothing is corrected}
I've found examples of functions (How to write an ampersand to an XML file from an Excel file using VBA?) but I have no idea where to place the code.
I've updated my post to address the criticsms below.