【Excel VBA】CSVファイルを読み込み、Excelファイルに書き出すマクロ

Excel VBA CSVファイルを読み込みExcelに書き出すマクロ

Excelでデータを加工したり、複数のシステムでデータを連携するために、CSVファイルのデータを読み込んで、Excelに書き出したいことはよくありますよね。

本記事では、CSVファイルを読み込んで、Excelファイルに書き出すマクロ(文字コード指定可能)を作成します。

イメージはこんな感じ↓です!

CSVファイルを読み込むマクロ

1. VBAのソースコードを書く

ソースコードを書きましょう。処理内容はソースのコメントに書いてあります。

たけのこ
右上の”copy”をクリックしたらソースをコピーできますよ!

copy

Sub ReadCsvAndWriteCell()

    Dim rowData, filePath As String
    Dim arrSplitRowData As Variant
    Dim rowCount, colCount As Long
    
    ' CSVファイルのフルパスを指定
    filePath = "C:\Users\Public\Documents\VBA\売上.csv"
    
    ' ADODB.Streamを使う
    With CreateObject("ADODB.Stream")
        
        ' 文字コードを設定
        .Charset = "UTF-8"
        
        ' CSVファイルを開く
        .Open
        .LoadFromFile filePath
        
        ' CSVファイルを最後まで読み込む
        Do Until .EOS
            
            ' データを1行読み込む
            rowData = .ReadText(-2)
            
            rowCount = rowCount + 1
            
            ' 読み込んだデータをカンマ区切りにする
            arrSplitRowData = Split(rowData, ",")
            
            ' カンマ区切りにしたデータをExcelに書き込む
            For colCount = 0 To UBound(arrSplitRowData)
            
                Cells(rowCount, colCount + 1) = arrSplitRowData(colCount)
                
            Next colCount
            
        Loop
        
        ' ADODB.Streamを閉じる
        .Close
        
    End With

End Sub

本マクロのポイント
  • CreateObject(“ADODB.Stream”)を使うことで、CSVファイルを読み込むときの文字コードを指定できるようにしています。本記事では、文字コードをUTF-8に設定しています。
たけのこ
日本語が文字化けしてしまう場合に備えています!

 

データをカンマ区切りで配列に設定していますが、配列の使い方をもっと知りたい方は以下の記事をご覧ください。

VBA 配列の使い方【VBA】配列の使い方

2. 準備

CSVファイルを用意します。文字コードを指定できるようにしているので、日本語をいれたファイルを用意します。

売上.csv

copy

2020/1/11,おにぎり,2,100,200
2020/1/11,サンドイッチ,5,200,1000
2020/1/11,唐揚げ弁当,3,400,1200

本記事のソースでは、CSVファイルの保存パスは以下にしています。

保存パス
“C:\Users\Public\Documents\VBA\売上.csv”

3. マクロを実行する

キーボードの【F5】を押す、または画面上部の【▶】を押して、マクロを実行します。

Excelにデータが書き出されていれば完了です!

 

↓ VBAを勉強したい人におすすめの書籍です!