Daten in Textdatei mit UTF-8 Kodierung speichern, ohne BOM (VBA)
UTF-8 geht nur mit ADOB.Stream
Vorgehen
Der Inhalt wird in das Object oStreamUtf geladen (inkl. BOM) danach wird der Zeiger im Object auf Position 3 gesetzt (BOM sind die ersten drei Zeichen) und der Inhalt bis zum Ende gewählt, in das Object oStreamBinary kopiert und als Dokument (Dateityp – txt, csv, … – wird per Variable vDataType definiert) gespeichert. Fertig.
Private Function SaveTxtFileUtf8(vFile As String, vDataType As String, vContent As String) As Boolean Dim oStreamUtf As Object Dim oStreamBinary As Object On Error GoTo Errorhandler Set oStreamUtf = CreateObject("adodb.stream") oStreamUtf.Type = 2 oStreamUtf.Charset = "UTF-8" oStreamUtf.Open oStreamUtf.WriteText vContent Set oStreamBinary = CreateObject("adodb.stream") oStreamBinary.Type = 1 oStreamBinary.Open oStreamUtf.Position = 3 oStreamUtf.CopyTo oStreamBinary oStreamUtf.Flush oStreamUtf.Close oStreamBinary.SaveToFile vFile & "." & vDataType, 2 oStreamBinary.Flush oStreamBinary.Close Set oStreamUtf = Nothing Set oStreamBinary = Nothing SaveTxtFileUtf8 = True Done: Exit Function Errorhandler: Set oStreamUtf = Nothing Set oStreamBinary = Nothing SaveTxtFileUtf8 = False End Function