Hallo Leute,
ich habe eine seeeeehr lange Excelliste, die umfasst 981 Zeilen. Es gibt die Spalten:
- Nummer
- Kunde
-Titel
- Datum
- System
- Dauer
Nun will ich den Inhalt jeder Zeile in ein separates XML Dokument überführen. Hierzu möchte ich ein Template verwenden.
Das Template ist nun testweise erstmal "test.xml", das sieht simpel und folgendermaßen aus:
<?xml version='1.0'?>
<nummer>
</nummer>
<kunde>
</kunde>
<titel>
</titel>
<datum>
</datum>
<system>
</system>
<dauer>
</dauer>
<nummer>
</nummer>
<vieleWeitereTagsDieNichtBefülltWerden>
</vieleWeitereTagsDieNichtBefülltWerden>
Ergebnis soll also sein:
981 XML Files, die die aussehen wie test.xml, aber mit den Infos aus der jeweiligen Zeile befüllt sind.
Versucht habe ich es bislang damit:
Sub testXLStoXML()
sTemplateXML = _
"<?xml version='1.0'?>" + vbNewLine + _
"<data>" + vbNewLine + _
" <nummer>" + vbNewLine + _
" </nummer>" + vbNewLine + _
" <kunde>" + vbNewLine + _
" </kunde>" + vbNewLine + _
" <titel>" + vbNewLine + _
" </titel>" + vbNewLine + _
" <datum>" + vbNewLine + _
" </datum>" + vbNewLine + _
" <system>" + vbNewLine + _
" </system>" + vbNewLine + _
" <dauer>" + vbNewLine + _
" </dauer>" + vbNewLine + _
" <nummer>" + vbNewLine + _
" </nummer>" + 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
sdocName = .Cells(lRow, 1).Value
sNummer = .Cells(lRow, 2).Value
sKunde = .Cells(lRow, 3).Value
sTitel = .Cells(lRow, 4).Value
sDatum = Format(.Cells(lRow, 5).Value, "DD-MM-YYYY")
sSystem = .Cells(lRow, 6).Value
sDauer = .Cells(lRow, 7).Value
doc.Load ("C:\Users\gom9sh\Desktop\Tests VBA\test.XML")
doc.getElementsByTagName("nummer")(0).appendChild doc.createTextNode(sNummer)
doc.getElementsByTagName("kunde")(0).appendChild doc.createTextNode(sKunde)
doc.getElementsByTagName("titel")(0).appendChild doc.createTextNode(sTitel)
doc.getElementsByTagName("datum")(0).appendChild doc.createTextNode(sDatum)
doc.getElementsByTagName("system")(0).appendChild doc.createTextNode(sSystem)
doc.getElementsByTagName("dauer")(0).appendChild doc.createTextNode(sDauer)
doc.Save sdocName
Next
End With
End Sub
Leider gibt er mir den Laufzeitfehler '91' zurück.
Debugging funktioniert bis:
doc.getElementsByTagName("nummer")(0).appendChild doc.createTextNode(sNummer)
Vermutlich kann er auf meine test.xml Datei nicht zugreifen und dementsprechend mit bspw. "nummer" nichts anfangen. Sicher bin ich mir allerdings nicht.
Jemand eine Idee? Bin noch neu in der VBA-Welt und über jede Hilfe sehr dankbar!
Grüße Anton
|