Analysieren von XML in Microsoft Excel VBA
In diesem Artikel erfahren Sie, wie Sie XML-Dateien in VBA parsen.
Bedeutung eines XML-Parsers
Als Benutzer von Microsoft Excel ist es üblich, dass Sie einige Daten in Form einer XML-Datei erhalten. Sie müssen die Informationen aus der XML-Datei abrufen und sie entsprechend Ihren Anforderungen in Ihren Arbeitsblättern oder VBA-Makros verwenden.
Eine Möglichkeit, dies zu tun, besteht darin, sie als Textdatei zu behandeln und die Informationen zu analysieren. Dies ist jedoch keine elegante Methode zum Analysieren von XML-Dateien, da die Informationen mithilfe von Tags gut strukturiert gespeichert werden und die Behandlung als Textdatei dieses Konzept widerlegt.
Daher müssen wir einen XML-Parser verwenden. Ein XML-Parser liest die XML-Datei und ruft die relevanten Daten ab, damit sie problemlos verwendet werden können.
Erstellen Sie einen XML-Parser mit VBA
Wir können eine XML-Datei mit VBA parsen und die Daten in unsere Excel-Tabelle konvertieren. Die Methode, die wir verwenden werden, verwendet die XML DOM
-Implementierung, kurz für XML Document Object Model, und dieses Modell ermöglicht es uns, die XML-Datei als ein Objekt darzustellen, das wir dann nach Bedarf manipulieren können.
Um mit dem Analysieren Ihrer XML-Datei über VBA zu beginnen, müssen Sie eine einfache Abfolge von Schritten ausführen. Diese werden im Folgenden erläutert.
Um XML über VBA zu parsen, müssen Sie MSXML.4.0
oder höher auf Ihrem System haben.
-
Verweis auf Microsoft XML hinzufügen
Zuerst müssen Sie im VBA-Editor einen Verweis auf
Microsoft XML, V6.0
hinzufügen. So wird es gemacht:Öffnen Sie den VBA-Editor über die Registerkarte
Entwickler
in Excel. -
Gehen Sie im Menü zu Extras > Referenzen.
-
Scrollen Sie nach unten und markieren Sie
Microsoft XML, V6.0
, dann klicken Sie aufOK
.Beachten Sie, dass die Version von Microsoft XML vom Betriebssystem und Microsoft Office abhängt, das auf Ihrem Computer installiert ist.
-
Schreiben Sie VBA-Code, um die XML-Datei in
XML DOM
zu ladenAngenommen, wir haben die folgende XML-Datei:
<?xml version="1.0" encoding="ISO8859-1" ?> <menu> <food> <name> Halwa Puri </name> <price> $7.50 </price> <description> Halwa Puri is from Indian and Pakistani cuisines, having the sweet Halwa and the savory Puri which is a fried flatbread. </description> <calories> 900 </calories> </food> </menu>
Wir können den folgenden Code verwenden, um diese XML-Datei über VBA zu analysieren, indem wir auf folgende Weise ein
XML DOM
-Objekt erstellen:Sub XMLParser() Dim xDoc As New MSXML2.DOMDocument60 Dim node As IXMLDOMElement Set xDoc = New MSXML2.DOMDocument60 With xDoc .async = False .validateOnParse = True If xDoc.Load("D:\VBA\example.xml") = False Then Debug.Print .parseError.reason, .parseError.ErrorCode Exit Sub End If Set node = xDoc.SelectSingleNode("//price") MsgBox node.Text End With End Sub
Im obigen Code haben wir zunächst eine Variable xDoc
vom Typ MSXML2.DOMDocument60
erstellt. Hier haben wir am Ende 60
angehängt, weil wir Version 6.0
von Microsoft XML
verwenden, und ohne die 60
erzeugt dieser Code einen Kompilierungsfehler von Benutzerdefinierter Typ nicht gefunden
.
Als nächstes haben wir angegeben, dass wir mit der Variable xDoc
arbeiten, indem wir die Anweisung With
verwenden. Die Eigenschaft .async
definiert die Berechtigung für asynchrone Downloads, und die Eigenschaft .validateOnParse
gibt an, ob der Parser das XML
-Dokument validieren soll.
Danach verwenden wir die .Load
-Funktion, um die angegebene XML
-Datei in die DOM
-Variable zu laden. Hier können Sie den Pfad und den Dateinamen auf Ihren Computer ändern.
Die nächsten beiden Zeilen dienen der Fehlerbehandlung, falls die XML
-Datei nicht korrekt geladen wird. Um zu testen, ob das Laden funktioniert hat, nehmen wir einen Knoten aus der Datei und geben seinen Namen als Preis
an.
Beachten Sie, dass beim Knotennamen zwischen Groß- und Kleinschreibung unterschieden wird und er entsprechend Ihrer XML
-Datei angegeben werden muss. Abschließend zeigen wir den Preis mit der Eigenschaft node.Text
in einer Meldungsbox an.
Ausgang:
Dies zeigt, dass das Laden einwandfrei funktioniert hat.
Eine Möglichkeit, die XML-Dateidaten zu verwenden, besteht darin, sie in einer Excel-Tabelle zu speichern. Lassen Sie uns ein paar Änderungen am obigen Code vornehmen, um die Daten in der Excel-Tabelle zu speichern:
Sub XMLParser()
Dim xDoc As New MSXML2.DOMDocument60
Set xDoc = New MSXML2.DOMDocument60
Dim list As MSXML2.IXMLDOMNodeList
Dim osh As Worksheet
Set osh = ThisWorkbook.Sheets("Sheet1")
oRow = 1
With xDoc
.async = False
.validateOnParse = True
If xDoc.Load("D:\VBA\example.xml") = False Then
Debug.Print .parseError.reason, .parseError.ErrorCode
Exit Sub
End If
Set list = xDoc.SelectNodes("//price")
loopCount = 0
For Each node In list
oRow = oRow + 1
osh.Range("A" & oRow) = node.Text
Next
End With
End Sub
Hier rufen wir alle Preis
-Knoten ab und speichern sie im Blatt. In diesem Beispiel haben wir nur einen Preis
-Knoten, der wie folgt im Blatt gespeichert wird:
Sie können den Code gemäß Ihrer XML-Datei und Ihren Anforderungen anpassen.
Abschluss
Dies fasst unsere Diskussion über die Methode zum Analysieren von XML
-Dateien durch VBA zusammen. In diesem Artikel haben wir gelernt, wie man einen XML-Parser mit XML DOM
in VBA baut.
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub