【Excel】【VBA】ADODB.Streamを利用したコード変換機能付きCSVファイル出力

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office

Excel VBAでADODB.Stream(Microsoft ActiveX Data Objects)を利用すると、文字コードを明示的に指定しながらCSVファイルを出力することができます。

Windows(Excel)以外のシステムへCSVファイルを取り込む際、文字コード(UTF-8やShift-JISなど)の不一致による文字化けを防ぐために有効な方法です。

前提条件・参照設定

VBAからADODB.Streamを利用するには、VBEの「ツール」>「参照設定」から以下のライブラリにチェックを入れるか、または遅延バインディングを利用する必要があります。

  • Microsoft ActiveX Data Objects x.x Library

サンプルコード

アクティブシートの使用範囲(UsedRange)のデータを読み込み、指定した文字コードでCSVファイルとして保存する最小実行例です。

Sub ADODBStreamを利用したコード変換機能付きCSVファイル出力()
    Dim i As Long
    Dim j As Long
    Dim strList As String
    Dim FileName As String
    Dim Charset As String
    
    FileName = "C:\MyCSVlist_UTF8_OUT.csv" 'CSVファイルの保存先パスを指定
    Charset = "UTF-8" ' "UTF-8" または "Shift-JIS" などを指定

    Dim ADOBStream As Object
    Set ADOBStream = CreateObject("ADODB.Stream")
    
    Dim Ws As Worksheet
    Set Ws = ActiveSheet

    With ADOBStream
        .Type = 2 ' adTypeText
        .Charset = Charset
        .Open
    End With
    
    ' 行データを作成して書き込み
    Dim lastRow As Long, lastCol As Long
    lastRow = Ws.UsedRange.Rows.Count
    lastCol = Ws.UsedRange.Columns.Count
    
    Dim r As Long, c As Long
    For r = 1 To lastRow
        strList = ""
        For c = 1 To lastCol
            If c > 1 Then
                strList = strList & ","
            End If
            strList = strList & Ws.Cells(r, c).Text
        Next c
        ADOBStream.WriteText strList, 1 ' adWriteLine
    Next r
    
    ' ファイルへ保存(既存ファイルは上書き)
    ADOBStream.SaveToFile FileName, 2 ' adSaveCreateOverWrite
    
    ' 終了処理
    ADOBStream.Close
    Set ADOBStream = Nothing
    
    MsgBox "CSVファイルの出力が完了しました:", vbInformation
End Sub

注意事項・トラブルシューティング

ADODB.StreamでUTF-8を指定してファイルを出力する場合、BOM(Byte Order Mark)が付加されます。BOMなしのUTF-8で出力する必要がある場合は、追加のバイナリ処理が必要になるため注意してください。

この記事の更新履歴

この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。

2026年9月12日

  • 追加必要な参照設定や前提条件、実行手順についての説明を追加しました。
  • 変更コードブロックのHTML出力を整理し、読みやすく整形しました。

文書情報

記事タイトル
【Excel】【VBA】ADODB.Streamを利用したコード変換機能付きCSVファイル出力
作成日
更新日
Source URL
https://papanda925.com/?p=1418

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました