Mit Word-VBA eine XML-Datei als Endlosstring in Textdatei speichern
Hallo!
Ich möchte den Inhalt einer Garmin-GPX-Datei (die ja eingentlich eine XML-Datei ist) aufdröseln und analysieren.
Dazu würde ich am liebsten Word-VBA verwenden, weil ich den erhaltenen Textstring mit Word bearbeiten will.
Beim Öffnen erkennt Word die Dateistruktur und versucht, die Datei mit dem vorgegebenen XML-Schema zu öffnen.
Ich brauche den Inhalt aber als fortlaufenden String in der Form, als würde ich die Datei mit dem Editor/Notepad öffnen.
Beispielsweise hätte ich gerne den Text in dieser Form:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xmlns:wptx1="http://www.garmin.com/xmlschemas/WaypointExtension/v1" xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" creator="Oregon 550t" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www8.garmin.com/xmlschemas/GpxExtensionsv3.xsd http://www.garmin.com/xmlschemas/WaypointExtension/v1 http://www8.garmin.com/xmlschemas/WaypointExtensionv1.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd;>< ... href="http://www.garmin.com"><text>Garmin International</text></link><time>2024-07-25T15:10:10Z</time></metadata><trk><name>25-JUL-24 17:10:08</name><extensions><gpxx:TrackExtension><gpxx:DisplayColor>Blue</gpxx:DisplayColor></gpxx:TrackExtension></extensions><trkseg><trkpt lat="48.9349514991" lon="8.7456791103"><ele>391.87</ele><time>2024-07-25T15:09:42Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:atemp>23.1</gpxtpx:atemp><gpxtpx:hr>66</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt><trkpt lat="48.9348570351" lon="8.7456988078"><ele>392.36</ele><time>2024-07-25T15:10:04Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:atemp>23.1</gpxtpx:atemp><gpxtpx:hr>68</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt></trkseg></trk></gpx>
Word macht allerdings dieses daraus:
Garmin International
2024-07-25T15:10:10Z
25-JUL-24 17:10:08
Blue
391.87
2024-07-25T15:09:42Z
23.1
66
392.36
2024-07-25T15:10:04Z
23.1
68
Bisher habe ich es so versucht:
Documents.Open FileName:=Dateiname1
ActiveDocument.SaveAs FileName:=Dateiname1, FileFormat:=wdFormatText
Hat jemand eine Idee, wie ich meine Anforderung umsetzen kann?
Vielen Dank im Voraus für eure Hilfe.
Viele Grüße
klanax
Ich möchte den Inhalt einer Garmin-GPX-Datei (die ja eingentlich eine XML-Datei ist) aufdröseln und analysieren.
Dazu würde ich am liebsten Word-VBA verwenden, weil ich den erhaltenen Textstring mit Word bearbeiten will.
Beim Öffnen erkennt Word die Dateistruktur und versucht, die Datei mit dem vorgegebenen XML-Schema zu öffnen.
Ich brauche den Inhalt aber als fortlaufenden String in der Form, als würde ich die Datei mit dem Editor/Notepad öffnen.
Beispielsweise hätte ich gerne den Text in dieser Form:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xmlns:wptx1="http://www.garmin.com/xmlschemas/WaypointExtension/v1" xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" creator="Oregon 550t" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www8.garmin.com/xmlschemas/GpxExtensionsv3.xsd http://www.garmin.com/xmlschemas/WaypointExtension/v1 http://www8.garmin.com/xmlschemas/WaypointExtensionv1.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd;>< ... href="http://www.garmin.com"><text>Garmin International</text></link><time>2024-07-25T15:10:10Z</time></metadata><trk><name>25-JUL-24 17:10:08</name><extensions><gpxx:TrackExtension><gpxx:DisplayColor>Blue</gpxx:DisplayColor></gpxx:TrackExtension></extensions><trkseg><trkpt lat="48.9349514991" lon="8.7456791103"><ele>391.87</ele><time>2024-07-25T15:09:42Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:atemp>23.1</gpxtpx:atemp><gpxtpx:hr>66</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt><trkpt lat="48.9348570351" lon="8.7456988078"><ele>392.36</ele><time>2024-07-25T15:10:04Z</time><extensions><gpxtpx:TrackPointExtension><gpxtpx:atemp>23.1</gpxtpx:atemp><gpxtpx:hr>68</gpxtpx:hr></gpxtpx:TrackPointExtension></extensions></trkpt></trkseg></trk></gpx>
Word macht allerdings dieses daraus:
Garmin International
2024-07-25T15:10:10Z
25-JUL-24 17:10:08
Blue
391.87
2024-07-25T15:09:42Z
23.1
66
392.36
2024-07-25T15:10:04Z
23.1
68
Bisher habe ich es so versucht:
Documents.Open FileName:=Dateiname1
ActiveDocument.SaveAs FileName:=Dateiname1, FileFormat:=wdFormatText
Hat jemand eine Idee, wie ich meine Anforderung umsetzen kann?
Vielen Dank im Voraus für eure Hilfe.
Viele Grüße
klanax
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1293363151
Url: https://administrator.de/contentid/1293363151
Ausgedruckt am: 24.11.2024 um 08:11 Uhr
2 Kommentare
Neuester Kommentar
Moin.
Oder wenn man nur den reinen Inhalt braucht geht auch
Bzw. bei UTF8 Files
Bearbeiten mittels Parser ist aber immer besser weil das invalides XML vermeidet !
Inhalt bzw. Zeilen in XML File mit Script hinzufügen
Gruß Strods
Dazu würde ich am liebsten Word-VBA verwenden, weil ich den erhaltenen Textstring mit Word bearbeiten will.
Bähh. Für das Bearbeiten braucht es kein Word, dazu verwendet man wenn möglich immer einen XML Parser! Der verwandelt das XML in Objekte die man schön mit Methoden bearbeiten kann, den reinen XML Inhalt bekommst du damit aber auch wenn man unbedingt willSet xmlDoc = CreateObject("MSXML2.DomDocument.6.0")
xmlDoc.async = false
xmlDoc.load "D:\route.gpx"
MsgBox xmlDoc.xml
Set fso = CreateObject("Scripting.FileSystemObject")
strXML = fso.OpenTextFile("D:\route.gpx",1).ReadAll()
MsgBox strXML
Function ReadUTF8(file)
With CreateObject("ADODB.Stream")
.Type = 2 : .Charset = "UTF-8" : .Open : .LoadFromFile(file)
ReadUTF8 = .ReadText
.Close
End With
End Function
strXML = ReadUTF8("D:\route.gpx")
MsgBox strXML
Bearbeiten mittels Parser ist aber immer besser weil das invalides XML vermeidet !
Inhalt bzw. Zeilen in XML File mit Script hinzufügen
Gruß Strods