Save text file UTF-8 encoded with VBA Save text file UTF-8 encoded with VBA vba vba

Save text file UTF-8 encoded with VBA


I found the answer on the web:

Dim fsT As ObjectSet fsT = CreateObject("ADODB.Stream")fsT.Type = 2 'Specify stream type - we want To save text/string data.fsT.Charset = "utf-8" 'Specify charset For the source text data.fsT.Open 'Open the stream And write binary data To the objectfsT.WriteText "special characters: äöüß"fsT.SaveToFile sFileName, 2 'Save binary data To disk

Certainly not as I expected...


You can use CreateTextFile or OpenTextFile method, both have an attribute "unicode" usefull for encoding settings.

object.CreateTextFile(filename[, overwrite[, unicode]])        object.OpenTextFile(filename[, iomode[, create[, format]]])

Example: Overwrite:

CreateTextFile: fileName = "filename" Set fso = CreateObject("Scripting.FileSystemObject") Set out = fso.CreateTextFile(fileName, True, True) out.WriteLine ("Hello world!") ... out.close

Example: Append:

 OpenTextFile Set fso = CreateObject("Scripting.FileSystemObject") Set out = fso.OpenTextFile("filename", ForAppending, True, 1) out.Write "Hello world!" ... out.Close

See more on MSDN docs


This writes a Byte Order Mark at the start of the file, which is unnecessary in a UTF-8 file and some applications (in my case, SAP) don't like it.Solution here: Can I export excel data with UTF-8 without BOM?