Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: xml via VBA

xml via VBA
07.08.2019 15:15:41
Tom
Hallo,
ich habe ein VBA-Code geschrieben, der eine XML-Datei erstellen soll. Hier der Code:

Private Sub test2()
Dim XDoc As Object, root As Object, elem As Object, XMLCommentTag As Object, XMLHeadTag As  _
Object, elem2 As Object, elem3 As Object
Dim copyrightComm As String
copyrightComm = " (C)2019 "
Set XDoc = CreateObject("MSXML2.DOMDocument")
Set XMLCommentTag = XDoc.createComment(copyrightComm)
Set XMLHead = XDoc.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")
'Add xml tag
XDoc.appendChild XMLHead
'Add Comment
XDoc.appendChild XMLCommentTag
'Add root tag
Set root = XDoc.appendChild(XDoc.createElement("Root"))
'Add Attribute to root
root.setAttribute "xmlns:xsi", "test"
'Add child to root
Set elem = root.appendChild(XDoc.createElement("Child"))
elem.Text = "test"
'Add Attribute to child
elem.setAttribute "attr1", "value.attr1"
elem.setAttribute "attr2", "value.attr2"
'Add child to child
Set elem2 = elem.appendChild(XDoc.createElement("Childtwo"))
'Add child to root
Set elem3 = root.appendChild(XDoc.createElement("Child3"))
elem3.Text = "test3"
'Save the XML file
XDoc.Save "my_file.xml"
End Sub
Das Erstellen funktioniert auch einwandfrei, jedoch sieht der Inhalt folgendermaßen aus:
xml version="1.0" encoding="UTF-8" ?>


test Child >
test3

Eigentlich soll das Element Childtwo das Child von Child sein. Das wird auch so im script deklariert:
'Add child to child
Set elem2 = elem.appendChild(XDoc.createElement("Childtwo"))
Aber als Ausgabe kommt nur der Endtag:

Ich bin die ganze Logik oft durchgegangen, allerdings raffe ich nicht, woran es liegt. Würde mich über jeden kleinen Tipp (oder auch größeren) freuen. Danke für die Antworten.
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: xml via VBA
08.08.2019 17:12:06
mmat
Hallo Tom,
du hast "Child" Text zugewiesen, scheinbar führt das dazu, das der untergeordnete Knoten als Inline-Element gestaltet wird
vg, MM
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

XML-Datei mit VBA erstellen und optimieren


Schritt-für-Schritt-Anleitung

Um eine XML-Datei mit VBA zu erstellen, kannst du den folgenden VBA-Code verwenden. Dieser Code nutzt die MSXML2.DOMDocument-Bibliothek, um eine XML-Struktur zu generieren.

Private Sub test2()
    Dim XDoc As Object, root As Object, elem As Object, XMLCommentTag As Object, XMLHeadTag As Object, elem2 As Object, elem3 As Object
    Dim copyrightComm As String
    copyrightComm = " (C)2019 "
    Set XDoc = CreateObject("MSXML2.DOMDocument")
    Set XMLCommentTag = XDoc.createComment(copyrightComm)
    Set XMLHead = XDoc.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")

    'Add xml tag
    XDoc.appendChild XMLHead
    'Add Comment
    XDoc.appendChild XMLCommentTag
    'Add root tag
    Set root = XDoc.appendChild(XDoc.createElement("Root"))
    'Add Attribute to root
    root.setAttribute "xmlns:xsi", "test"
    'Add child to root
    Set elem = root.appendChild(XDoc.createElement("Child"))
    elem.Text = "test"
    'Add Attribute to child
    elem.setAttribute "attr1", "value.attr1"
    elem.setAttribute "attr2", "value.attr2"
    'Add child to child
    Set elem2 = elem.appendChild(XDoc.createElement("Childtwo"))
    'Add child to root
    Set elem3 = root.appendChild(XDoc.createElement("Child3"))
    elem3.Text = "test3"
    'Save the XML file
    XDoc.Save "my_file.xml"
End Sub

Dieser Code erstellt eine XML-Datei mit einer Struktur, die ein Wurzel-Element enthält sowie zwei untergeordnete Elemente. Achte darauf, dass du den Code in einem Modul in Excel VBA einfügst und dann ausführst.


Häufige Fehler und Lösungen

Ein häufiger Fehler, der beim Erstellen von XML-Dateien mit VBA auftreten kann, ist, dass untergeordnete Elemente nicht korrekt hinzugefügt werden. In deinem Fall könnte das Problem darin liegen, dass du dem Element "Child" Text zugewiesen hast. Dies kann dazu führen, dass das untergeordnete Element nicht wie gewünscht angezeigt wird.

Lösung: Stelle sicher, dass du dem untergeordneten Element "Childtwo" den Text nicht direkt im übergeordneten Element "Child" zuweist. Halte den Text für "Childtwo" getrennt.


Alternative Methoden

Neben der Verwendung von MSXML2.DOMDocument gibt es auch andere Möglichkeiten, XML-Dateien in Excel VBA zu erstellen. Du kannst beispielsweise die Microsoft XML v6.0-Bibliothek nutzen, die eine ähnliche Funktionalität bietet:

Dim XDoc As MSXML2.DOMDocument60
Set XDoc = New MSXML2.DOMDocument60

Dieses Vorgehen kann für komplexere XML-Strukturen nützlich sein.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du eine XML-Datei mit Kommentaren erstellen kannst:

Dim comment As Object
Set comment = XDoc.createComment("Dies ist ein Kommentar")
XDoc.appendChild comment

Das Hinzufügen von XML-Kommentaren kann nützlich sein, um zusätzliche Informationen zu den Elementen bereitzustellen.


Tipps für Profis

  • Verwende MSXML2.DOMDocument60, um die neuesten Funktionen und Fehlerbehebungen zu nutzen.
  • Achte darauf, die XML-Datei nach dem Erstellen zu validieren, um sicherzustellen, dass sie dem XML-Standard entspricht.
  • Nutze die schema-Definitionen, um die Struktur deiner XML-Datei zu definieren.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine XML-Datei gut strukturiert ist?
Verwende ein XML-Validierungstool, um sicherzustellen, dass deine XML-Datei den Standards entspricht.

2. Warum wird mein untergeordnetes Element nicht angezeigt?
Stelle sicher, dass du dem übergeordneten Element keinen Text zuweist, bevor du das untergeordnete Element hinzufügst. Dies kann zu Problemen mit der Darstellung führen.

3. Wie kann ich ein XML-Dokument in Excel lesen?
Du kannst die XML-Daten in Excel importieren, indem du die Funktion "Daten aus XML importieren" verwendest und die XML-Datei wählst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige