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?