- Startseite
- Neuigkeiten
- Über mich
- Referenzen
- Beispiele
- Artikel
- Tools
- Access-Tipps
- %-Eingabe
- Bilder
- Datenblattreset
- Datumsformate
- DConcat
- Hilfe
- Import
- Testversion
- UTF-8-Dateien
- WerIstDrin
- Excel-Tipps
- Spielereien
- Kontakt
- Impressum
- Datenschutz
Meine Projekte:


UTF-8-Dateien mit VBA schreiben
Ich erstelle alle meine Webseiten seit vielen Jahren aus mehreren selbstgeschriebenen Access-Datenbanken, die ich als CMS verwende. Auch in Kundenanwendungen erstelle ich immer wieder Exporte im HTML-Format.
Problem
Die entstandenen Dateien werden auch in der Regel korrekt angezeigt, evtl. muss man das richtige Charset in den Meta-Daten angeben. Ein Check im W3C-Validator ergibt jedoch immer einen Fehler, wenn die Datei nicht im UTF-8-Format abgespeichert ist. Das geht jedoch mit dem im VBA eigebauten Open- und Print-Anweisungen oder dem File-System-Object nicht.
Lösung
Um eine Datei mit einem speziellen Charset zu erstellen und den Text entsprechend zu kodieren, muss man einen ADODB.Stream öffnen, beschreiben und speichern.
Damit ich meine Programme nicht aufwendig umschreiben muss, habe ich mir die kleine Klasse clsOPC (wie Open, Print, Close) geschrieben. Und weil Open, Close, Print und Write geschützte Bezeichnungen sind, habe ich den Funktionsnamen ein f (wie Funktion oder File) vorangestellt. Mit etwas Suchen & Ersetzen und ein paar kleinen Änderungen habe ich so meine Anwendungen einfach und schnell auf den neusten Stand der Internettechnik gebracht:

Code-Schnipsel
Dim utf As Object Set utf = New clsOPC utf.fOpen "C:\temp\test.htm" utf.fPrint "<!DOCTYPE html> … </html>" utf.fClose
UTF-8 ist nur das Standardformat der Klasse. Sie kann (gesteuert über einen optionalen Parameter) Dateien mit jedem beliebigen Charset erstellen und füllen, das von Windows unterstützt wird. Alle verfügbaren Charsets finden sich in der Registry unter HKEY_CLASSES_ROOT\MIME\Database\Charset
.
Die Klasse kann in allen Office-Anwendungen unter Windows eingesetzt werden.
Download
Klasse und Testmodul für VBA
(Datei: clsOPC.zip, ca. 4 KB)