Analysieren von XML in Microsoft Excel VBA

Bilal Shahid 21 Juni 2023
  1. Bedeutung eines XML-Parsers
  2. Erstellen Sie einen XML-Parser mit VBA
  3. Abschluss
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.

    Gehen Sie zu Referenzen

  • Scrollen Sie nach unten und markieren Sie Microsoft XML, V6.0, dann klicken Sie auf OK.

    Microsoft XML V6.0-Referenz hinzugefügt

    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 laden

    Angenommen, 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:

Laden Sie die XML-Datei in das XML-DOM

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:

Verwenden Sie die XML-Dateidaten, um sie in einer Excel-Tabelle zu speichern

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.

Bilal Shahid avatar Bilal Shahid avatar

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