[ VBA ] 文字コード UTF-8 でCSVファイルを出力する ( ADODB.Stream )

Pocket

ここでは、VBA で CSV 形式のデータファイルを作成するサンプルスクリプトを掲載しています。なお、出力するテキストの文字コードは UTF-8 です。Excel などは文字コードが Shift-JIS で管理されていますので、シート上のデータを出力する際などに利用できます。

スポンサーリンク

UTF-8 で CSV ファイルを出力する

CSV ファイルを出力するサンプルスクリプトになります。詳細はサンプル内のコメントを参照ください。

    Dim stream
    Dim i As Integer
    Dim csvStr As String
    
    Const adTypeText = 2 ' ストリームタイプ(テキスト)
    Const adSaveCreateOverWrite = 2 ' ファイル書き込みモード(既存ファイル上書き)
    
    ' ADODBストリームをテキスト(文字コード:UFT-8)でオープン
    Set stream = CreateObject("ADODB.Stream")
    stream.Open
    stream.Type = adTypeText
    stream.Charset = "UTF-8"

    ' 10行分CSVデータを書き込み
    For i = 1 To 10
        ' 改行コードは自前で挿入する必要あり
        csvStr = i & "行目," & "string" & i & vbCrLf
                    
        '1行書き込み(改行コードも書き込み)
        ' ★ 勝手に改行コードが付与されると思っていたが、どうやら違うらしい
        stream.WriteText csvStr, adWriteLine
    
    Next
    
    'CSVデータをファイルに保存する(既存ファイルは上書き)
    stream.SaveToFile ("e:\test.csv"), adSaveCreateOverWrite
            
    'ストリームを閉じる
    stream.Close
    
    Set stream = Nothing

作成される CSV ファイル

上記のサンプルスクリプトを実行して生成される CSV ファイルは次の通りです。

1行目,string1
2行目,string2
3行目,string3
4行目,string4
5行目,string5
6行目,string6
7行目,string7
8行目,string8
9行目,string9
10行目,string10
    

今日は朝からのどが痛し。辛し。エアコンをつけっぱなしにして寝たせいと思われるし。

スポンサーリンク


Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>