CSV ファイルを読み込む
Excel VBA で CSV ファイルを読み込む方法
Excel VBA で CSV ファイルを読み込む方法はいくつかありますが、代表的なものとして以下の2つが挙げられます。
1. Open メソッド を使う方法
最も基本的な方法です。ファイルを開いて、一行ずつ読み込むという処理を行います。
VB.Net
Sub CSVを読み込む()
Dim strFile As String
Dim strLine As String
Dim intRow As Integer
' 読み込むCSVファイルのパスを指定
strFile = "C:\Users\ユーザー名\Documents\data.csv"
' ファイルを開く
Open strFile For Input As #1
' 1行ずつ読み込む
intRow = 1
Do While Not EOF(1)
Line Input #1, strLine
Cells(intRow, 1).Value = strLine
intRow = intRow + 1
Loop
' ファイルを閉じる
Close #1
End Sub
コードは注意してご使用ください。
2. QueryTables.Add メソッド を使う方法
Excel の機能を使って、CSV ファイルをワークシートに直接取り込む方法です。
VB.Net
Sub CSVを読み込む()
Dim strFile As String
Dim ws As Worksheet
' 読み込むCSVファイルのパスを指定
strFile = "C:\Users\ユーザー名\Documents\data.csv"
' データを貼り付けるワークシートを指定
Set ws = ThisWorkbook.Sheets("Sheet1")
' CSVファイルをワークシートに読み込む
With ws.QueryTables.Add(Connection:= _
"TEXT;" & strFile, Destination:=ws.Range("A1"))
.Name = "Query from " & strFile
.FieldNames = True
.TextFilePlatform = 4 ' Windows (ANSI)
.TextFileStartRow = 1
.Refresh BackgroundQuery:=False
End With
End Sub
コードは注意してご使用ください。
どちらの方法を選ぶべきか
Open メソッド:
詳細な制御が必要な場合
大量のデータを効率よく処理したい場合
QueryTables.Add メソッド:
簡単かつ迅速に CSV ファイルを取り込みたい場合
Excel の機能を活用したい場合
その他
文字コード: CSV ファイルの文字コードを指定する必要があります。上記例では TextFilePlatform = 4 で Windows (ANSI) を指定していますが、UTF-8 などの場合は適切な値に変更してください。
区切り文字: カンマ以外の区切り文字を使用している場合は、Delimiter プロパティで指定します。
データの形式: CSV ファイルのデータ形式に合わせて、読み込んだ後のデータの形式を調整する必要がある場合があります。
エラー処理: ファイルが見つからない、データの形式が不正などのエラーが発生した場合に備えて、エラー処理を追加することをおすすめします。
さらに詳しく知りたい方へ
侍エンジニアブログ: 詳細な解説と高速化方法も紹介されています。https://www.sejuku.net/blog/73950
Qiita: ゼロ落ちなし、数値・文字列OKな読み込み方法が紹介されています。https://qiita.com/k-kariya/items/c2ad8ff3443f5d52bbbd
ご自身の環境や処理内容に合わせて、最適な方法を選択してください。
何か他に知りたいことがあれば、お気軽にご質問ください。
例:
「特定の列のデータだけを抽出したい」
「複数の CSV ファイルをまとめて読み込みたい」
「読み込んだデータをグラフにしたい」
これらの質問に対して、具体的なコード例を交えて解説いたします。
キーワード: Excel VBA, CSV, 読み込み, Open メソッド, QueryTables.Add メソッド
補足:
上記のコードはあくまで一例です。ご自身の環境や処理内容に合わせて適宜修正してください。
より複雑な処理を行う場合は、VBA のマクロレコーダーを利用したり、インターネットで情報を検索したりして、より詳細な情報を収集してください。
VBA の学習には、書籍やオンライン教材が多数あります
この記事が気に入ったらサポートをしてみませんか?