Heute stand ich vor der Aufgabe, aus einer XML-Datei mit Excel (bzw. VBA) gezielt den Inhalt eines bestimmten XML-Elements auszulesen. Am einfachsten macht man sowas natürlich mit XPath, was aber von Excel per se nicht angeboten wird. Mit Excel ist zunächt einmal nur die Verarbeitung von XML im Zusammenhang mit XML-Datenquellen in Form von XML-Schemas möglich. Diese Datenquellen können auch recht einfach angelegt und die entsprechenden Daten im- und exportiert werden: ActiveWorkbook.XmlMaps("Name_der_Zuordnung")
Aber wie gesagt, wollte ich aus einer beliebigen XML-Datei bzw. einem XML-String mittels XPath Elemente auslesen. Hierzu ist zunächst ein Verweis auf die Microsoft XML-Bibliothek zu setzen, die die benötigten Funktionen bereitstellt. Hierzu einfach im VBA-Editor unter Extras -> Verweise einen Verweis auf Microsoft XML, v6.0 (oder welche Version sonst verfügbar/gewünscht ist) setzen.
Danach können XML-Daten wie folgt verarbeitet werden (in meinem Beispiel lese ich den XML-String des Schemas der verknüpften Datenquelle aus):
-
Sub GetXMLElementExample()
-
Dim doc As MSXML2.DOMDocument
-
Dim xmlLoaded As Boolean
-
Dim kws As IXMLDOMNodeList
-
Dim kw As IXMLDOMNode
-
Dim kwIndex As Integer
-
-
Set doc = New DOMDocument
-
xmlLoaded = doc.loadXML(ActiveWorkbook.XmlMaps("XML_Source").Schemas.Item(0).XML)
-
If Not xmlLoaded Then
-
' Fehlerbehandlung
-
Exit Sub
-
End If
-
-
Set kws = doc.selectNodes("/xsd:schema/xsd:simpleType[@name='KWBezeichner']/xsd:restriction/xsd:enumeration/@value")
-
For kwIndex = 0 To kws.Length - 1
-
Range("A" & (kwIndex + 1)).Value = kws.Item(kwIndex).Text
-
Next kwIndex
-
End Sub











