Thema Datum  Von Nutzer Rating
Antwort
Rot Excel-Sheet pro Zeile in XML überführen
02.08.2019 15:44:40 Anton Heine
NotSolved
02.08.2019 15:46:44 Gast95300
NotSolved
02.08.2019 23:52:52 Gast28713
NotSolved
03.08.2019 12:44:34 Gast50858
NotSolved

Ansicht des Beitrags:
Von:
Anton Heine
Datum:
02.08.2019 15:44:40
Views:
978
Rating: Antwort:
  Ja
Thema:
Excel-Sheet pro Zeile in XML überführen

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

 

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Excel-Sheet pro Zeile in XML überführen
02.08.2019 15:44:40 Anton Heine
NotSolved
02.08.2019 15:46:44 Gast95300
NotSolved
02.08.2019 23:52:52 Gast28713
NotSolved
03.08.2019 12:44:34 Gast50858
NotSolved