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

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

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

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

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

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

1. Module1を追加する

標準モジュールにModule1を追加します。

【VBAProjectを右クリック】→ 【挿入】 → 【標準モジュール】をクリックします。

そもそもこの画面なに?という方は、以下の記事でVBAを書き始める準備の方法をまとめているのでご覧ください。

Excel VBA マクロの作り方 【Excel VBA】Excelマクロの始め方 ~簡単なサンプル付き~

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

Module1を追加したら、以下のソースコードをコピぺしましょう。処理内容はソースのコメントに書いてあります。

たけのこ
右上の”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に設定しています。
たけのこ
日本語が文字化けしてしまう場合に備えています!

Module1にソースコードをコピーしたら、以下のようになります。

3. 準備

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”

4. マクロを実行する

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

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

 

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