目的
VBA(Excelマクロ)を使って、文字コードがUTF-8のテキストファイルを書き出す
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
' オブジェクト型変数を宣言する Dim varMsgStrings As Object ' ADODB ストリームを作成する Set varMsgStrings = CreateObject("ADODB.Stream") ' 文字コードに UTF-8 をセットする varMsgStrings.Charset = "UTF-8" ' ADODBストリームをオープンする varMsgStrings.Open ' 文字列をADODBストリームへ書き込む varMsgStrings.WriteText "The sound of the Gion Shoja bells" & vbCrLf varMsgStrings.WriteText "祇園精舎の鐘の声" & vbCrLf ' ADODBストリームをファイルへ書き込む varMsgStrings.SaveToFile ActiveWorkbook.Path & "\Sample_UTF8.txt", 2 ' ADODBストリームをクローズする varMsgStrings.Close ' 変数を解放する Set varMsgStrings = Nothing |
注意事項
上記のマクロで作成したテキストファイルの先頭にはBOM(Byte Order Mark)の3バイト(0xEF, 0xBB,0xBF)が挿入される。VisualStudioなど多くのMicrosoft製品が扱うUTF-8のテキストファイルはBOMが付加されるが、Unicodeの規格上はUTF-8のBOMは必須ではない(「BOMあり」と「BOMなし」が存在する)ため、注意すること。
次のように書き分けるときもある
- UTF-8 : BOMあり
- UTF-8N : BOMなし