【EXCEL VBA】UTF-8でCSVファイル出力をしたい

UTF-8でCSVファイル出力するには、ADODB.Streamを使うのが一番簡単です。FileSystemObjectを使うのと同様に参照設定しておくと後々楽です。

ADODB.Streamで解決する

UTF-8でファイル出力するには、ADODB.Streamオブジェクトを使います。CSVファイルに限らずUTF-8でテキスト出力する際にも使うことができます。

サンプルプログラムを確認する(コピペOK)

Sub sample()
    
    '最終行列
    Dim maxRow As Long: maxRow = Range("A1").SpecialCells(xlLastCell).Row
    Dim maxCol As Long: maxCol = Range("A1").SpecialCells(xlLastCell).Column

    ' ファイルをUTF-8で開く
    Dim st As Object: Set st = New ADODB.Stream
    st.Charset = "UTF-8"
    st.Open

    Dim strLine As String
    Dim i As Long, j As Long
    For i = 1 To maxRow
        strLine = ""
        For j = 1 To maxCol - 1
            strLine = strLine & Cells(i, j) & ","
        Next j
        strLine = strLine & Cells(i, j)
        st.WriteText strLine, adWriteLine
    Next i
    
    '上書きモードでセーブ
    st.SaveToFile "d:\test.csv", adSaveCreateOverWrite
    st.Close

End Sub