このページではVBAでCSVファイルを開き、Excelシートに読み込む方法を紹介しています。
CSVファイルはシステム間のデータの受け渡しに多く使われます。ほとんどの場合はVBAでレイアウトを変更しますが、そこにファイルを開く仕組みを付け加えるとさらに便利になります。
よろしければお試し下さい。
コーディング
以下がコーディングサンプルです。
Sub sample()
Dim FileName As String
Dim i As Integer
Dim rec As String
Dim wIndata() As String
FileName = "d:\samplecsv.csv"
Open FileName For Input As #1 'ファイルオープン
i = 0
Do Until EOF(1) 'EOFまでLOOP
Line Input #1, rec 'データ取り込み
wIndata = Split(rec, ",") '配列に格納
i = i + 1
Cells(i, 1) = wIndata(0) 'cellにデータを代入
Cells(i, 2) = wIndata(1)
Loop
Close #1 'ファイルのクローズ
End Sub
解説
手順1:ファイルオープン
FileName = "d:\samplecsv.csv"
Open FileName For Input As #1
Openステートメントは以下です。
Open ファイル名 For 開き方 #ファイル番号
ファイル名…フルパスで指定します、パスを省略した場合はカレントフォルダを参照します。
開き方…ファイルに対して「読み込み」「書き込み」などのアクションを指定します。
Input(読み込み)、Output(書き込み)、Add(追加)、Random(ランダム)、Binary(バイナリ)
#ファイル番号…数値でファイルの番号を指定します。
手順2:LOOPさせながら、Line Inputで1件ずつデータを取り込む
Do Until EOF(1)
Line Input #1, rec
…
…
…
Loop
Line Input ステートメントは以下です。
Line Input #ファイル番号,変数名
#ファイル番号…該当ファイルのファイル番号を指定します、Openステートメントで指定した番号になります。
変数名…読み込んだデータを格納する変数です。
手順3:取り込んだデータを配列に格納
配列の格納では、Split関数で「,」カンマで分割して格納します。
Dim wIndata() As String
…
…
…
wIndata = Split(rec, ",")
Split関数とは
Split関数は、区切り文字で区切られた文字列を、分割して配列に返します。
例えば、文字列 “a,b,c” を配列xに代入した場合
x(0)=”a”
x(1)=”b”
x(2)=”c”
となります。
手順4:配列に格納したデータをセルに代入
i = i + 1
Cells(i, 1) = wIndata(0)
Cells(i, 2) = wIndata(1)
手順5:ファイルをクローズ
Close #1
VBAは難しい?
ところで、VBAは難しいでしょうか?
VBAは一般的には簡単な言語だと言えますが、プログラミングの経験がない人には難しいかもしれないですね。
書籍などの独学でなかなか覚えられないのであれば、スクールで基礎から学ぶのも手段です。