西海岸より

つらつらざつざつと

ExcelのマクロでUTF-8のファイル出力

よく使う関数のメモ。エクセルからiOSアプリのplistファイルを作ったり、xml作ったりするときに利用。

  • UTF-8ファイル出力関数(BOM無し)
Function writeUTF8File( _
outputFileName As String, _
outputContent As String)

    ' 一時出力用のストリーム(ADODB)を作成
    ' テキストモードで文字コードUTF-8(BOMあり)とし、書き込み
    Dim tempStream As Object
    Set tempStream = CreateObject("ADODB.Stream")
    tempStream.Open
    tempStream.Type = adTypeText
    tempStream.Charset = FILE_CHAR_SET
    tempStream.LineSeparator = adLF
    tempStream.WriteText outputContent, adWriteLine
    
    ' バイナリモードに変更
    tempStream.Position = 0
    tempStream.Type = adTypeBinary
    
    ' 先頭3バイト(BOM)をスキップし、データ読込
    tempStream.Position = 3
    Dim bin: bin = tempStream.Read()
    tempStream.Close
    
    ' 読み込んだバイナリデータをバイナリデータとしてファイルに出力
    Dim outputStream: Set outputStream = CreateObject("ADODB.Stream")
    outputStream.Type = adTypeBinary
    outputStream.Open
    outputStream.Write (bin)
    outputStream.SaveToFile outputFileName, adSaveCreateOverWrite
    outputStream.Close
    
    'メモリからオブジェクトを削除する
    Set outputStream = Nothing
    Set tempStream = Nothing

End Function
  • 使い方
Call writeUTF8File("ファイル名", "出力する文字列")

できるExcel実践マクロ 2007/2003/2002対応 面倒な作業が一瞬で終わる! 記録&自動化のコツがわかる本

できるExcel実践マクロ 2007/2003/2002対応 面倒な作業が一瞬で終わる! 記録&自動化のコツがわかる本