txt-Datei in utf-8 ohne Bom per vba
30.10.2022 10:27:26
Regina
ich bin ganz neu in vba und möchte per Makro eine Tabelle exportieren. Das Endergebnis soll eine Trennzeichen getrennte .txt-Datei sein mit Codierung UTF-8 ohne BOM. Ich habe verschiedene Tipps in Foren ausprobiert und habe eine Lösung, die fast funktioniert, nur leider ist das Endergebnis UTF8 mit BOM. Ich trenne in zwei Schritte:
1. Export des sheets als .txt Trennzeichen getrennt (funktioniert)
2. Umwalndeln der .txt-Datei in UTF8 (funktioniert, aber ergibt UTF8 mit BOM).
Was muss ich ändern, damit UTF-8 ohne BOM herauskommt? Ich habe schon verschiedene Vorschläge zum direkten Export von UTF-8 ohne BOM gefunden (z.B. https://blog.soprani.at/2017/02/24/csv-in-utf-8-ohne-bom-aus-excel/), die beinhalten aber nie .txt Trennzeichen getrennt. Ich würde also gerne meinen ersten Schritt beibehalten und dann im zweiten etwas ändern, damit UTF-8 ohne BOM herauskommt. Was könnte ich tun? Hier der Code für Schritt 2:
Sub KonvertANSI2UTF()
'** Konvertierung einer ANSI/ASII-Datei in das UTF-8 Format
'** Dimensionierung der Variablen
Dim strTextFile As String
Dim strTextFile_Neu As String
Dim intFile As Integer
Dim sText As String
'** Pfade vorgeben für ANSI- und UTF-Datei
intFile = FreeFile
strTextFile = "C:\Users\L380\Documents\Arbeit\BSB\Phase4_Metadaten\N-3256.txt" 'Pfad der Originaldatei, welche konvertiert werden soll
strTextFile_Neu = "C:\Users\L380\Documents\Arbeit\BSB\Phase4 Metadaten_utf8\N-3256.txt" 'Pfad der neuen UTF-Datei
'** Gesamtes Originial File (ANSI) öffnen und in Varialbe sText einlesen (diese wird anschließend in die UTF-Datei geschrieben)
Open strTextFile For Input As #intFile
sText = Input$(LOF(intFile), intFile)
'** Encoding mit UTF-8, alternativ auch UTF-16 möglich
sCharSet = "utf-8"
'** Schreiben der Daten in die neue UTF-Datei
Set adodbStream = CreateObject("ADODB.Stream")
With adodbStream
.Type = 2 'Stream Typ
.Charset = sCharSet 'Oder utf-16 etc.
.Open
.WriteText sText 'Text schreiben
.SaveToFile strTextFile_Neu, 2 'binary Daten speichern
End With
End Sub
Vielen Dank für Eure Hilfe!