Zuerst würde ich empfehlen, die Bibliothek "Microsoft XML, vx.x" zu verwenden, wobei x für die neueste verfügbare Version steht (sollte 6.0 sein). Danach bist du gut zu gehen. Aber die Dinge, die man bei der Arbeit mit XML in VBA beachten sollte, sind zu weit gefasst, um sie in einer Antwort zu erfassen. Ich werde hier den Code liefern, obwohl Sie die gewünschte Ausgabe zu erhalten:
Sub parse_xml()
Dim XmlFileName As String: XmlFileName = "C:\Path\Filename.xml"
Dim XmlDocument As New MSXML2.DOMDocument60
Dim NodeA As IXMLDOMNode
Dim NodeB As IXMLDOMNode
Dim NodeC As IXMLDOMNode
XmlDocument.Load XmlFileName
For Each NodeA In XmlDocument.DocumentElement.ChildNodes
For Each NodeB In NodeA.ChildNodes
For Each NodeC In NodeB.ChildNodes
Debug.Print NodeC.ParentNode.ParentNode.BaseName & NodeC.ParentNode.BaseName & NodeC.BaseName
Next NodeC
Next NodeB
Next NodeA
End Sub
Bitte beachten Sie, dass ich Ihre Datei ein wenig zu erweitern, um eine gültige XML-Datei zu machen, die in die XmlDocument Variable geladen werden kann . Die XML-Datei ich für dieses Beispiel verwendet wird, ist die folgende:
<?xml version="1.0" encoding="UTF-8"?>
<data>
<A1>
<B1>
<c1>value</c1>
<c2>value</c2>
<c3>value</c3>
</B1>
<B2>
<c1>value</c1>
<c2>value</c2>
<c3>value</c3>
</B2>
</A1>
<A2>
<B1>
<c1>value</c1>
<c2>value</c2>
<c3>value</c3>
</B1>
<B2>
<c1>value</c1>
<c2>value</c2>
<c3>value</c3>
</B2>
</A2>
</data>
Dies wird die folgende Ausgabe erzeugen (I Debug.Print nur verwendet, wie Sie sehen können):
A1B1c2
A1B1c3
A1B2c1
A1B2c2
A1B2c3
A2B1c1
A2B1c2
A2B1c3
A2B2c1
A2B2c2
A2B2c3
Exkurs in der Ende: Im Gegensatz zu dem, was Pierre kommentiert habe, denke ich, dass das Parsen von XML in VBA die erreichbare Aufgabe ist. Aus meiner Erfahrung benötigen Sie nur die Bibliothek, die ich am Anfang des Posts empfohlen habe, um das eigentliche Parsen der Datei durchzuführen. Ich habe mit ziemlich komplexen XML-Dateien gearbeitet, die nur diese Bibliothek zum Parsen verwenden.
Edit: Dies ist der Code, dass nur Werte für die gewünschte Kriterium extrahieren:
Sub parse_xml()
Dim XmlFileName As String: XmlFileName = "C:\Path\Filename.xml"
Dim XmlDocument As New MSXML2.DOMDocument60
Dim NodeA As IXMLDOMNode
Dim NodeB As IXMLDOMNode
Dim NodeC As IXMLDOMNode
Dim DesiredA As String: DesiredA = "A2" 'Enter your desired A here
XmlDocument.Load XmlFileName
For Each NodeA In XmlDocument.DocumentElement.ChildNodes
If NodeA.BaseName = DesiredA Then 'This is the new line that selects your desired A
For Each NodeB In NodeA.ChildNodes
For Each NodeC In NodeB.ChildNodes
Debug.Print NodeC.ParentNode.ParentNode.BaseName & NodeC.ParentNode.BaseName & NodeC.BaseName
Next NodeC
Next NodeB
End If 'End of the If-Statement
Next NodeA
End Sub
Sie versuchen, ein XML-Dokument in VBA zu analysieren, und ich muss sagen, dass Sie eine holprige Straße vor Ihnen haben , können Sie sich [dieses Thema] (http://stackoverflow.com/questions/11305/how-to-parse-xml-using-vba) und [dieses] (http://stackoverflow.com/) ansehen Fragen/21491736/How-to-XML-Datei-und-schreiben-in-Daten-dann-save-it. Das Analysieren von XML in VBA ist albtraumhaft, versuchen Sie sich auch XPath anzusehen, aber es gibt keinen praktischen Weg dazu. –
Meinst du, wir können nicht in VBA ??? – user2155454
Anscheinend hast du die Links, die ich zur Verfügung gestellt habe, nicht geöffnet, aber ich werde es dir trotzdem erklären. Sie können, aber es ist extrem schwierig und Sie müssen alle Arten von Bibliotheken und Tools verwenden, wie [XPath klicken Sie auf den Link] (https://msdn.microsoft.com/en-us/library/ms256086 (v = vs.110) .aspx). Versuchen Sie bitte, nach Antworten zu suchen und geben Sie uns etwas zum Kauen, sonst wird Ihr Beitrag wahrscheinlich gelöscht. –