klanax
Goto Top

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

Content-Key: 1293363151

Url: https://administrator.de/contentid/1293363151

Printed on: July 27, 2024 at 16:07 o'clock

Member: Strods
Solution Strods Jul 27, 2024 updated at 14:04:31 (UTC)
Goto Top
Moin.
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 will
Set xmlDoc = CreateObject("MSXML2.DomDocument.6.0")  
xmlDoc.async = false
xmlDoc.load "D:\route.gpx"  
MsgBox xmlDoc.xml
Oder wenn man nur den reinen Inhalt braucht geht auch
Set fso = CreateObject("Scripting.FileSystemObject")  
strXML = fso.OpenTextFile("D:\route.gpx",1).ReadAll()  
MsgBox strXML
Bzw. bei UTF8 Files
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
Member: klanax
klanax Jul 27, 2024 at 14:08:11 (UTC)
Goto Top
Hallo Strods,

Lösung 1 funktioniert genau so, wie ich es brauche.

Vielen Dank für die superschnelle Antwort und viele Grüße

klanax