Dateien mit Excel VBA erzeugen – Teil 3 XML-Format

Dateien aus Excel können vielfach direkt in andere Anwendungen importiert werden. Manche Systeme/Anwendungen benötigen jedoch speziell aufbereitete Daten in bestimmten Speicherformaten um diese weiterverarbeiten oder nutzen zu können. An einem einfachen Beispiel zeige ich Ihnen in drei Teilen, wie Sie mit einem Excel-Makro Daten aus einer Exceltabelle in unterschiedlichen Speicherformaten erzeugen.

Teil 1: CSV/TXT-Format
Teil 2: HTML-Format
Teil 3: XML-Format

Bei XML-Dateien handelt es sich um eine erweiterbare Auszeichnungssprache (Englisch: Extensible Markup Language), abgekürzt XML, für die Darstellung von hierarchisch strukturierten Daten in Format einer Textdatei. Der Vorteil von XML-Dateien: Dieses Format kann sowohl von Menschen als auch von Maschinen gelesen werden. Die Syntax von XML wird von vielen formalen Programmiersprachen verwendet und ist ein Instrument um W3C konform eine offene verständliche Informationslandschaft für Mensch und Maschine zu gewährleisten. Auch die gängige Dokumentensprache HTML wurde als XHTML in dieses Konzept integriert, so dass XML als Definitionsbasis zu Grunde liegt. XML-Dateien werden für die Weitergabe und Weiterverarbeitung von Informationen genutzt und werden aufgrund der einfachen Syntax von vielen Systemen unterstützt. Soviel zum Hintergrund von XML-Dateien.

Wie in den ersten beiden Teilen wird erneut zunächst eine leere Datei erzeugt. In diesem Teil muss die Dateiendung .xml gewählt werden. Der Dateiname davor kann frei gewählt werden. Anschließend wird die Datei für das Schreiben der Daten geöffnet. Damit die Informationen im Anschluss auch korrekt wiedergegeben werden, sollte bei XML Dokumenten zu Beginn die Kodierung definiert werden. Mehr dazu weiter unten.

Um den VBA-Code zu testen sind die Werte für die Variablen strPath und strDateiname ggf. zu ändern. Die Variable strPath beinhaltet den Speicherpfad in der die Textdatei erstellt werden soll. Der Ordner muss bereits existieren und mit einem abschließenden “\” enden. In der Variable strDateiname wird der Dateiname und die Dateiendung der zu erstellenden Textdatei festgelegt. Achtung: Existiert die Datei im Ordner bereits, wird die Datei ohne Warnung überschrieben!

Sub XML_erzeugen()

Dim strDateiname As String, strPath As String
Dim i As Long, lngZeile As Long

strPath = "C:\Dateien_erstellen\XML\" 'Speicherpfad eintragen
strDateiname = "xml_dateiname.xml" 'Dateinamen mit Dateiendung eintragen
lngZeile = Range("A" & Rows.Count).End(xlUp).Row

Open strPath & strDateiname For Output As #1

Print #1, "<?xml version=""1.0"" encoding=""ISO-8859-1"" standalone=""yes""?>"
Print #1, "<orte>"

For i = 2 To lngZeile
    Print #1, "<eintrag id=""" & Cells(i, 1).Value & """>"
    Print #1, "  <plz>" & Cells(i, 2).Value & "</plz>"
    Print #1, "  <ort>" & Cells(i, 3).Value & "</ort>"
    Print #1, "</eintrag>"
Next i

Print #1, "</orte>"

Close #1

End Sub

XML-Dokumente bestehen aus Textzeichen in der UTF-8-Kodierung. Wichtig ist zu Beginn der XML-Datei die Deklaration der Kodierung für die in dem XML-Dokument gespeicherten Informationen um fehlerhafte Zeichenübersetzungen zu verhindern. Je nachdem wie Ihre Ursprungsdaten kodiert sind ist dies Kodierung ggf. anzupassen.

Nicht zu empfehlen ist die folgende Einleitung ohne Kodierung der Zeichensätze:

Print #1, "<?xml version=""1.0""?>"

Um sicher zu gehen, dass die jeweilige Anwendung die Inhalte des XML Dokuments nicht mit einem falschen Zeichensatz interpretiert sollten Sie die Kodierung immer über die Definition encoding=”” vorgeben. Die nachfolgende Programmzeile definiert die Inhalte als ISO 8859-1 Zeichensätze. Dies ist z.B. wichtig um Umlaute richtig darstellen zu lassen.

Print #1, "<?xml version=""1.0"" encoding=""ISO-8859-1"" standalone=""yes""?>"

Weitergehende Informationen zum Aufbau von XML Dokumenten können Sie im selfhtml wiki nachlesen.

Der vollständige VBA-Beispielcode steht Ihnen in der Excel-Mustermappe direkt zum Testen zur Verfügung.

Excel Mustermappe:

Dateien im XML-Format erstellenxmldokument_erstellen.xlsm

 
Gefällt Ihnen der Beitrag?

2 Gedanken zu “Dateien mit Excel VBA erzeugen – Teil 3 XML-Format

Schreibe einen Kommentar