Einlesen bestimmten Werten, Texten aus XML- Datei in EXCEL
Hallo Experten,
ich möchte in Excel die Werte/Texte aus einer XML-Datei direkt lesen ohne sie zu importieren. Kann jemand mir helfen?
Vielen Dank
Everest
ich möchte in Excel die Werte/Texte aus einer XML-Datei direkt lesen ohne sie zu importieren. Kann jemand mir helfen?
Vielen Dank
Everest
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 285961
Url: https://administrator.de/contentid/285961
Ausgedruckt am: 18.11.2024 um 03:11 Uhr
11 Kommentare
Neuester Kommentar
Moin,
Und wat willste auslesen ? Bisschen wenig Info ...
Schon mal die Suchfunktion angeschmissen ?!
Aus einer XML-Datei mehrere Daten auslesen und in einer bestimmten Syntax in eine Excel-Datei speichern
Gruß jodel32
Und wat willste auslesen ? Bisschen wenig Info ...
Schon mal die Suchfunktion angeschmissen ?!
Aus einer XML-Datei mehrere Daten auslesen und in einer bestimmten Syntax in eine Excel-Datei speichern
Gruß jodel32
Hallo Everest,
Bitteschön
Bitteschön
Sub ImportXML()
Set XML = CreateObject("MSxml2.DOMDocument.6.0")
XML.Load ("C:\temp\demo.xml")
With ActiveSheet
'Überschriften setzen
.Range("A1:F1").Value = Array("Hostname", "Start Date", "App1", "App2", "App3", "App4")
.Range("A1:F1").Font.Bold = True
'Anfangszelle setzen
Set rngOut = .Range("A2")
'Datum auslesen
Set summaryNode = XML.SelectSingleNode("/SUMMARY")
If Not summaryNode Is Nothing Then
strDate = summaryNode.Attributes.getNamedItem("Date").Text
Else
strDate = ""
End If
'Host-Nodes auslesen
Set nodesHOST = XML.SelectNodes("/SUMMARY/HOST[contains(@HostName,'APP')]")
'Für jeden HOST-Node setze die entsprechenden Infos in eine neue Zeile
If Not nodesHOST Is Nothing Then
For Each Node In nodesHOST
strHostname = Node.Attributes.getNamedItem("HostName").Text
strApp1 = Node.SelectSingleNode("App1").Attributes.getNamedItem("Version").Text
strApp2 = Node.SelectSingleNode("App2").Attributes.getNamedItem("Version").Text
strApp3 = Node.SelectSingleNode("App3").Attributes.getNamedItem("Version").Text
strApp4 = Node.SelectSingleNode("App4").Attributes.getNamedItem("Version").Text
rngOut.Resize(1, 6).Value = Array(strHostname, strDate, strApp1, strApp2, strApp3, strApp4)
Set rngOut = rngOut.Offset(1, 0)
Next
End If
End With
Set XML = Nothing
End Sub
Zitat von @Everest:
Ich muss es nur noch mit einem echten .XML Datei mit mehreren Feldern testen. Das sollte kein problem sein oder?
Definiere Felder ?Ich muss es nur noch mit einem echten .XML Datei mit mehreren Feldern testen. Das sollte kein problem sein oder?
Mein Skript durchläuft in deiner XML Datei alle HOST Elemente welche direkte Kindelemente im DocumentElement Summary sind, und extrahiert die in deiner Beispieldatei genannten Unterelemente bzw. Attribute.
Ich werde mich melden. Ich bin gespannt auf das Ergebniss.
Danke Dir nochmals und schönen Abend.
Alles klar, wünsche ich ebenso...Danke Dir nochmals und schönen Abend.
Zitat von @Everest:
Zum Verständnis, die Feldername in meinem Script heißen anders, als sie hier dargestellt sind. Das Prinzip ist ja das gleiche.
Solange der Aufbau und die Verschachtelung exakt gleich bleibt ja. Ansonsten ist immer Anpassung nötig.Zum Verständnis, die Feldername in meinem Script heißen anders, als sie hier dargestellt sind. Das Prinzip ist ja das gleiche.
1) Aus irgendeinem Grund, werden die Felder: StrOSName, strOSSPack, strApp6 beim Debuggen einen Fehler angezeigt: Runtime error (91), Object variable or Block variable not set. Ich habe es nicht rausgekriegt!
Dann Prüf als erstes die Groß- und Kleinschreibung der Elemente und Attribute, das diese übereinstimmen.Ohne deine original XML ist hier die Fehlerursache schwer aufklärbar.
Falls du sie nicht veröffentlichen willst kannst du sie auch gerne via PM zuschicken.
2) Ich möchte einen Filter setzen in "For Each Node in nodesHost", dass er nur die Hostnamen anzeigt, die Buchstaben "APP" findet. Z.B: MMMAPPNN, MMMTERNN
Die Beschreibung ist leider etwas unverständlich...meinst du damit das du nur Nodes verarbeiten willst die den String: APP im Hostname enthalten ?? Denn dein zweites Beispiel enthält das ja nicht sondern stattdessen "TER" ???Zitat von @Everest:
Hi Colinardo,
zum Punkt 2) Du hast es richtig verstanden. Es gibt verschiedene Server Namen, nur welcher, den String APP hat soll angezeigt werden.
Die XPath Query für die Hosts ist oben im Code entsprechend angepasst (Zeile 19)Hi Colinardo,
zum Punkt 2) Du hast es richtig verstanden. Es gibt verschiedene Server Namen, nur welcher, den String APP hat soll angezeigt werden.
Grüße und schönen Sonntagabend
Uwe