Per Batch (oder Excel-Makro) XML-Dateien mit Inhalt gefüllt aus Excel-Datenbank erstellen
Hallo,
ich habe eine Excel-Datei mit einem Tabellenblatt. In jeder Zeile steht ein Datensatz mit den Spalten-Angaben "Datei-Name", "Datei-Endung", "XML-Tag" und "Inhalt".
Jetzt möchte ich via Batch-Datei (oder auch Excel-Makro ggf.) für jede Zeile dieser Datenbank eine XML-Datei anlegen (Datei-Endung sollte variabel sein, also nicht zwingend .xml) und darin als Inhalt ein paar Zeilen XML, bzw. einfacher Text.
Geht das? Welcher Ansatz?
Ich weiß nicht mal, nach was ich da googeln sollte.
Gehts mit Batch oder doch eher via Excel-Marko?
Vielen Dank schon mal.
ich habe eine Excel-Datei mit einem Tabellenblatt. In jeder Zeile steht ein Datensatz mit den Spalten-Angaben "Datei-Name", "Datei-Endung", "XML-Tag" und "Inhalt".
Jetzt möchte ich via Batch-Datei (oder auch Excel-Makro ggf.) für jede Zeile dieser Datenbank eine XML-Datei anlegen (Datei-Endung sollte variabel sein, also nicht zwingend .xml) und darin als Inhalt ein paar Zeilen XML, bzw. einfacher Text.
Geht das? Welcher Ansatz?
Ich weiß nicht mal, nach was ich da googeln sollte.
Gehts mit Batch oder doch eher via Excel-Marko?
Vielen Dank schon mal.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 172998
Url: https://administrator.de/contentid/172998
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo dawson.
XML Dateien haben sehr strenge Syntaxregeln. Irgendeine Textdatei mit Endung XML ergibt noch lange keine XML Datei. Andererseits hast du durchaus Recht, dass eine XML Datei nicht zwingend die Endung XML haben muss.
Also, mindestens sollten wir noch die Zeichcodierung wissen, sowie den Name des Root-Elements.
Per Batch kommst du im Übrigen nicht an den Inhalt einer Excel Datei, mit VBScript allerdings schon.
Grüße
rubberman
XML Dateien haben sehr strenge Syntaxregeln. Irgendeine Textdatei mit Endung XML ergibt noch lange keine XML Datei. Andererseits hast du durchaus Recht, dass eine XML Datei nicht zwingend die Endung XML haben muss.
Also, mindestens sollten wir noch die Zeichcodierung wissen, sowie den Name des Root-Elements.
Per Batch kommst du im Übrigen nicht an den Inhalt einer Excel Datei, mit VBScript allerdings schon.
Grüße
rubberman
Hallo dawson!
... das ich leider hinsichtlich der Darstellung Deines Vorhabens (vor allem im Eröffnungsposting) nicht uneingeschränkt zu erwidern vermag - und wenn es jetzt heißt:
Und: Kannst Du bestätigen, dass das "rootelement" ein konstanter Wert ist?
Ansonsten kann ich mich rubberman nur anschließen: Wenn Du den Ablauf automatisieren willst, kommst Du um VB(A/S) nicht herum (und sei es nur, um die Daten in eine Textdatei zu exportieren) ...
Grüße
bastla
Ganz toll gemacht!
Danke für das Kompliment ...... das ich leider hinsichtlich der Darstellung Deines Vorhabens (vor allem im Eröffnungsposting) nicht uneingeschränkt zu erwidern vermag - und wenn es jetzt heißt:
<text>Inhalt der Zeile</text>
ist für mich noch immer nicht klar, ob dieser Text nun doch einzeilig ist oder es in der Zelle Zeilenumbrüche gibt ...Und: Kannst Du bestätigen, dass das "rootelement" ein konstanter Wert ist?
Ansonsten kann ich mich rubberman nur anschließen: Wenn Du den Ablauf automatisieren willst, kommst Du um VB(A/S) nicht herum (und sei es nur, um die Daten in eine Textdatei zu exportieren) ...
Grüße
bastla
Hallo Zusammen,
ich versuche mal einen Schuss ins Blaue (vielleicht treffe ich ja zufälligerweise ins Schwarze ).
*.vbs
Die Konstanten am Anfang des Codes anpassen und testen.
Grüße
rubberman
ich versuche mal einen Schuss ins Blaue (vielleicht treffe ich ja zufälligerweise ins Schwarze ).
*.vbs
Const strXLFile = "D:\irgendwo\test.xls"
Const iWorksheet = 1
Const strDestDir = "D:\irgendwo"
Const strEncoding = "UTF-8"
Const strRootElement = "rootelement"
Set objADOS = CreateObject("ADODB.Stream")
objADOS.Type = 2
line = 0
Set objWB = GetObject(strXLFile)
Set objWS = objWB.Worksheets(iWorksheet)
Do While objWS.Cells(line + 1, 1).Text <> ""
line = line + 1
With objADOS
.Open
.Charset = strEncoding
.WriteText "<?xml version=""1.0"" encoding=""" & strEncoding & _
"""?>" & vbCrLf & "<" & strRootElement & ">" & vbCrLf & vbTab & "<" & _
objWS.Cells(line, 3).Text & ">" & objWS.Cells(line, 4).Text & "</" & _
objWS.Cells(line, 3).Text & ">" & vbCrLf & "</" & strRootElement & ">"
.Position = 0
.SaveToFile strDestDir & "\" & objWS.Cells(line, 1).Text & _
"." & objWS.Cells(line, 2).Text, 2
.Close
End With
Loop
Set objWS = Nothing
objWB.Close
Set objWB = Nothing
Set objADOS = Nothing
Die Konstanten am Anfang des Codes anpassen und testen.
Grüße
rubberman