はじめに
VBAでUTF-8ファイルを作成する時、通常はこのような方法で作成する。
test.xlsm
Sub test()
Const FILE_NAME As String = "C:\Users\xxxx\test.txt"
Const BODY As String = "あいうえお"
With CreateObject("ADODB.Stream")
.Charset = "UTF-8"
.Open
.WriteText BODY
.SaveToFile FILE_NAME, 2
.Close
End With
End Sub
出来上がったファイルを見ると、BOM有りで出力されていた。BOM無しファイルを出力するにはもう一工夫必要そうだ。
BOM無しファイルを作成する
test.xlsm
Sub test()
Const FILE_NAME As String = "C:\Users\xxxx\test.txt"
Const BODY As String = "あいうえお"
Dim adodb1 As Object
Dim adodb2 As Object
Set adodb1 = CreateObject("ADODB.Stream")
Set adodb2 = CreateObject("ADODB.Stream")
With adodb1
.Charset = "UTF-8"
.Open
.WriteText BODY
.Position = 3
With adodb2
.Type = 1
.Open
adodb1.CopyTo adodb2
.SaveToFile FILE_NAME, 2
.Close
End With
.Close
End With
End Sub
これでBOM無しファイルを出力することができた。