Excel/VBA

TOP

CSVを文字コード(UTF-8)を指定して出力する方法

CSVを文字コード(UTF-8)を指定して出力する方法の説明画像です

ADODB.Streamオブジェクトを使用してCSVを出力する

CSVを文字コード(UTF-8)を指定して出力するには、ADODB.Streamオブジェクトを使用します。

ADODB.Streamオブジェクトはバイナリデータやテキストデータを扱う際に使用されるオブジェクトです。ADODB.StreamオブジェクトのTypeプロパティに「UTF-8」を指定することで文字コードがUTF-8のCSVファイルが出力されます。

ADODB.Streamオブジェクトを使用するにはObject型の変数を定義し、ADODB.Streamオブジェクトを生成することで使用することができます。

Dim stream As Object
Set stream = CreateObject("ADODB.Stream")


エクセルシート内のデータをCSVに出力する

CSVを文字コード(UTF-8)を指定して出力する方法の説明画像です

上記のデータをCSVファイルに出力します。

下記のサンプルコードはエクセルファイルと同じフォルダ内にCSVファイルを出力する方法となります。

サンプルコード


Sub CSV出力()
    
    Dim WS As Worksheet
    Dim stream As Object
    Dim SavePath As String
    Dim LastRow As Long, i As Long
    Dim csv_data As String
    
    'CSVを出力するデータが入っているシートを指定します
    Set WS = ThisWorkbook.Worksheets("data")
    
    'CSVを出力するパスを指定します(エクセルファイルと同じディレクトリにCSVを出力します)
    SavePath = ThisWorkbook.Path & "\テスト.csv"
    
    With WS
    
        'CSVを出力するデータが入っているシートのA列の最終行を取得します
        LastRow = .Cells(Rows.Count, "A").End(xlUp).Row
        
        'CSVに出力するデータをcsv_dataに格納していきます
        For i = 1 To LastRow
            
            'カンマ区切りで名前、年齢、職業を繋げています
            csv_data = csv_data & .Cells(i, "A").Value & "," & _
                                  .Cells(i, "B").Value & "," & _
                                  .Cells(i, "C").Value & vbCrLf
        Next i
        
    End With
    
    'ADODB.Streamオブジェクトを生成します
    Set stream = CreateObject("ADODB.Stream")
    
    With stream
        .Type = 2 'テキストモード
        .Charset = "UTF-8" 'UTF-8エンコードを指定
        .Open
        .WriteText csv_data
        .SaveToFile SavePath, 2
        .Close
    End With
    
    'リソースの開放
    Set stream = Nothing
    Set WS = Nothing
    
End Sub
        

上記のサンプルコードを実行することでエクセルファイルと同じフォルダ内にCSVファイルが出力されました。

CSVを文字コード(UTF-8)を指定して出力する方法の説明画像です

ADODB.Streamオブジェクトのプロパティの詳細

プロパティ名 設定値 説明
Type 1 バイナリモード(画像、音声、圧縮ファイルなど)
2 テキストモード(テキストファイル)
Charset UTF-8 文字コードUTF-8を指定
Shift-JIS 文字コードShift-JISを指定
SaveToFile(第2引数) 1 新規ファイル作成
※同じファイルが存在していた場合はエラーとなります。
2 上書き保存
※同じファイルが存在していた場合は上書きとなります。

関連記事