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
Die Erstellung von HTML-Dateien mit Inhalten aus einer Exceltabelle eignet sich besonders für die automatisierte Bereitstellung von Berichten. Der Vorteil an diesem Format ist, dass die erstellten Dateien mit allen gängigen Webbrowsern aufgerufen werden können und eine optisch ansprechende Darstellung der zusammengefassten Inhalte möglich ist. Die einzelnen Anwender benötigen zur Ansicht der erstellten HTML-Dateien selbst weder MS Excel noch eine vergleichbare Office Anwendung. Auch kann so sichergestellt werden, dass die ursprüngliche Datei nicht verändert oder gelöscht wird. HTML-Dateien können auch wahlweise im Internet oder nur im Firmennetzwerk bereitgestellt werden. Die Anwendungsmöglichkeiten sind zahlreich.
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 HTML-Datei 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 HTML-Datei festgelegt. Achtung: Existiert die Datei im Ordner bereits, wird die Datei ohne Warnung überschrieben!
Sub HTML_erzeugen() Dim strDateiname As String, strPath As String Dim i As Long, lngZeile As Long strPath = "C:\Dateien_erstellen\HTML\" 'Speicherpfad eintragen strDateiname = "html_dateiname.html" 'Dateinamen mit Dateiendung eintragen lngZeile = Range("A" & Rows.Count).End(xlUp).Row Open strPath & strDateiname For Output As #1 Print #1, "<!DOCTYPE html>" Print #1, "<html lang=""de"">" Print #1, " <head>" Print #1, " </head>" Print #1, " <body>" Print #1, " <table border=""1"">" For i = 1 To lngZeile If i = 1 Then Print #1, " <thead>" Print #1, " <tr><th>" & Cells(i, 1).Value & "</th><th>" & Cells(i, 2).Value & "</th><th>" & Cells(i, 3).Value & "</th></tr>" Print #1, " </thead>" Print #1, " <tbody>" Else Print #1, " <tr><td>" & Cells(i, 1).Value & "</td><td>" & Cells(i, 2).Value & "</td><td>" & Cells(i, 3).Value & "</td></tr>" End If Next i Print #1, " </tbody>" Print #1, " </table>" Print #1, " </body>" Print #1, "</html>" Close #1 End Sub
Die grundlegenden Funktionen des Makros sind in Teil 1: CSV/TXT-Format beschrieben. Wesentliche Änderungen sind natürlich die Speicherung im Dateiformat “.html” (muss im Dateinamen berücksichtigt werden) und der Teil des Makros in dem die Zeilen in die HTML-Datei geschrieben werden.
WICHTIG: In VBA wird das Anführungszeichen genutzt um den Beginn und das Ende einer Zeichenfolge festzulegen. Für den zu schreibenden HTML-Code müssen Sie jedoch innerhalb der Zeichenfolge Anführungszeichen schreiben können. Im VBA Code schreiben Sie deshalb jeweils zwei Anführungszeichen hintereinander.
Das oben aufgeführte Beispiel ist auf die notwendigsten Zeilen für die Erstellung einer W3C-konformen HTML-Datei reduziert. Grundsätzlich kann man natürlich auch CSS-Stylesheet- oder externe JS-Javascript-Dateien einbauen. Sollen die Dateien zudem im Internet veröffentlicht werden, empfiehlt sich ggf. auch Metadaten-Informationen hinzuzufügen.
Beispiel für den Einbau einer Stylesheet-Datei mit dem Namen style.css und einer Javascript-Datei mit dem Namen jquery.js. Das Beispiel setzt voraus, dass die Dateien auf derselben Ebene des Servers oder bei lokaler Nutzung im selben Ordnerpfad liegen. Ist das nicht der Fall, muss vor den Dateinamen noch die relative (z.B. /css/) oder absolute Adresse (beginnend mit z.B. http://) vor dem Dateinamen hinzugefügt werden.
Print #1, " <link rel=""stylesheet"" href=""style.css"">" Print #1, " <script src=""jquery.js""></script>"
Optionale Metadaten-Informationen sind z.B. der Titel und eine Kurzbeschreibung. Wichtig, sofern die Webseite in Suchmaschienen gefunden werden soll.
Print #1, " <title>Titel der HTML-Seite</title>" Print #1, " <meta name=""description"" content=""Beschreibung der HTML-Seite"">"
Soll die Datei in Suchmaschienen gefunden werden, sollte dies den Suchmaschienen bekannt gemacht werden:
Print #1, " <meta name=""robots"" content=""index,follow"">"
Aber noch wichtiger ist es den Suchmaschienen mitzuteilen, falls keine Indizierung gewünscht sein sollte:
Print #1, " <meta name=""robots"" content=""noindex,nofollow"">"
Der vollständige Beispielcode steht in der Mustermappe direkt zum Testen zur Verfügung. Die Erstellung einer XML-Datei wird in Teil 3 der Serie vorgestellt.
Excel Mustermappe:
Weiterlesen…
Teil 1: CSV/TXT-Format
Teil 3: XML-Format
1 Gedanke zu „Dateien mit Excel VBA erzeugen – Teil 2 HTML-Format“