XML Dateien in Excel einlesen per VBA
Hallo Experten,
ich habe viele xml Dateien die einen identischen Aufbau besitzen. Ich möchte gerne die xml files (evtl mit Filter) aus einem spezifizierbaren Verzeichnis in eine(!) Excel Tabelle einlesen
Dabei soll jede Datei die Daten in eine neue Zeile der Tabelle schreiben. Super wäre wenn ich in den files spezifizieren könnte welche Daten in die Tabelle geschrieben werden.
So sehen die xml files aus (Auszug):
-<MeasControl>
-<Level1>
<TempCompensationNominal>74.6580</TempCompensationNominal>
<TempCompensationCalibration>74.6614</TempCompensationCalibration>
<TempCompensationAmountTempCompensation>-0.0034</TempCompensationAmountTempCompensation>
<MeasureNominal>26.7200</MeasureNominal>
<MeasureMeas1>26.9178</MeasureMeas1>
<MeasureMeas2>26.9250</MeasureMeas2>
<MeasureMean>26.9214</MeasureMean>
<MeasureDifference>0.0036</MeasureDifference>
<MeasureInfeed>-0.1007</MeasureInfeed>
<CorrectionLastStroke>-0.0007</CorrectionLastStroke>
</Level1>
-<Level2>
<TempCompensationNominal>74.6580</TempCompensationNominal>
<TempCompensationCalibration>74.6610</TempCompensationCalibration>
<TempCompensationAmountTempCompensation>-0.0030</TempCompensationAmountTempCompensation>
<MeasureNominal>26.5680</MeasureNominal>
<MeasureMeas1>26.6164</MeasureMeas1>
<MeasureMeas2>26.6212</MeasureMeas2>
<MeasureMean>26.6188</MeasureMean>
<MeasureDifference>0.0024</MeasureDifference>
<MeasureInfeed>-0.0254</MeasureInfeed>
<CorrectionLastStroke>-0.0004</CorrectionLastStroke>
</Level2>
<MeasureDisplacementStartPos>0</MeasureDisplacementStartPos>
</MeasControl>
Ich möchte jetzt bspw. aus 20 xml files jeweils die Daten <Level1><TempCompensationAmountTempCompensation> und <Level2><TempCompensationAmountTempCompensation>
Ich bin jetzt leider kein VB Profi und konnte mir somit auch mit diesem Thema:
Einlesen bestimmten Werten, Texten aus XML- Datei in EXCEL
nicht behelfen!
Besten Dank im Voraus
ich habe viele xml Dateien die einen identischen Aufbau besitzen. Ich möchte gerne die xml files (evtl mit Filter) aus einem spezifizierbaren Verzeichnis in eine(!) Excel Tabelle einlesen
Dabei soll jede Datei die Daten in eine neue Zeile der Tabelle schreiben. Super wäre wenn ich in den files spezifizieren könnte welche Daten in die Tabelle geschrieben werden.
So sehen die xml files aus (Auszug):
-<MeasControl>
-<Level1>
<TempCompensationNominal>74.6580</TempCompensationNominal>
<TempCompensationCalibration>74.6614</TempCompensationCalibration>
<TempCompensationAmountTempCompensation>-0.0034</TempCompensationAmountTempCompensation>
<MeasureNominal>26.7200</MeasureNominal>
<MeasureMeas1>26.9178</MeasureMeas1>
<MeasureMeas2>26.9250</MeasureMeas2>
<MeasureMean>26.9214</MeasureMean>
<MeasureDifference>0.0036</MeasureDifference>
<MeasureInfeed>-0.1007</MeasureInfeed>
<CorrectionLastStroke>-0.0007</CorrectionLastStroke>
</Level1>
-<Level2>
<TempCompensationNominal>74.6580</TempCompensationNominal>
<TempCompensationCalibration>74.6610</TempCompensationCalibration>
<TempCompensationAmountTempCompensation>-0.0030</TempCompensationAmountTempCompensation>
<MeasureNominal>26.5680</MeasureNominal>
<MeasureMeas1>26.6164</MeasureMeas1>
<MeasureMeas2>26.6212</MeasureMeas2>
<MeasureMean>26.6188</MeasureMean>
<MeasureDifference>0.0024</MeasureDifference>
<MeasureInfeed>-0.0254</MeasureInfeed>
<CorrectionLastStroke>-0.0004</CorrectionLastStroke>
</Level2>
<MeasureDisplacementStartPos>0</MeasureDisplacementStartPos>
</MeasControl>
Ich möchte jetzt bspw. aus 20 xml files jeweils die Daten <Level1><TempCompensationAmountTempCompensation> und <Level2><TempCompensationAmountTempCompensation>
Ich bin jetzt leider kein VB Profi und konnte mir somit auch mit diesem Thema:
Einlesen bestimmten Werten, Texten aus XML- Datei in EXCEL
nicht behelfen!
Besten Dank im Voraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 630136
Url: https://administrator.de/contentid/630136
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
8 Kommentare
Neuester Kommentar
VBA ist doch sowas von altbacken und bringt in Zukunft nur Probleme mit sich, sowas macht man heute gleich schnell mit der Powershell, für die wäre das ein Einzeiler (Variablendeklaration jetzt zur Übersicht mal ausgenommen)
$folder = 'D:\uglyguy\*.xml'
$output = 'D:\uglyguy\data.csv'
Select-Xml -Path $folder -XPath '/MeasControl' | select Path,@{n='Level1';e={$_.Node.Level1.TempCompensationAmountTempCompensation}},@{n='Level2';e={$_.Node.Level2.TempCompensationAmountTempCompensation}} | export-csv $output -Delimiter ";" -NoType -Encoding UTF8
Ich bin jetzt leider kein VB Profi
Dann fang auch besser gar nicht mehr damit an .
Jepp, brauchst du nur den Xpath auf '/Root/MeasControl' anpassen ...
p.s. für die Zukunft bitte Codetags (siehe Symbolleiste das "</>") für Quellcodes benutzen. Danke!
$folder = 'D:\uglyguy\*.xml'
$output = 'D:\uglyguy\data.csv'
Select-Xml -Path $folder -XPath '/Root/MeasControl' | select Path,@{n='Level1';e={$_.Node.Level1.TempCompensationAmountTempCompensation}},@{n='Level2';e={$_.Node.Level2.TempCompensationAmountTempCompensation}} | export-csv $output -Delimiter ";" -NoType -Encoding UTF8
p.s. für die Zukunft bitte Codetags (siehe Symbolleiste das "</>") für Quellcodes benutzen. Danke!
Gleiches Schema wie oben schau es dir doch einfach ab ...
# ....
Select-Xml -Path $folder -XPath '/Root/MeasControl' | select Path,@{n='TempCompensation_Level1';e={$_.Node.Level1.TempCompensationAmountTempCompensation}},@{n='TempCompensation_Level2';e={$_.Node.Level2.TempCompensationAmountTempCompensation}}, @{n='MeasureInfeed_Level1';e={$_.Node.Level1.MeasureInfeed}},@{n='MeasureInfeed_Level2';e={$_.Node.Level2.MeasureInfeed}} | export-csv $output -Delimiter ";" -NoType -Encoding UTF8
Kann man das eigentlich irgendwo nachlesen wie man die einzelnen sections in einem xml file ansteuert?
Kannst du, die Selektionssprache nennt sich XPathhttps://www.w3schools.com/xml/xpath_syntax.asp