この記事では以下の方法を知ることができます。
VBAを使用してCSVファイルをExcelに取り込む方法
CSVファイルを取り込むプログラム
以下はCSVファイルを読み込むコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
Sub Sample() ' 読み込むテキストファイルのパスを指定します Open "C:\sample\sample.csv" For Input As #1 ' 読み込み先Excelの行番号 Dim row_num As Long: row_num = 1 ' ファイルの終端まで繰り返し処理 Do While Not EOF(1) ' ファイルを1行読み込みbufに入れます Line Input #1, buf ' CSVファイルを「,」で分割し配列に入れます dataArr = Split(buf, ",") ' カンマで分割された数の分だけ列方向繰り返す For i = 0 To UBound(dataArr) ' 読み込んだ値をExcelに書込みます Cells(row_num, i + 1).Value = dataArr(i) Next ' 行番号を更新します row_num = row_num + 1 Loop ' 読み込んだファイルを閉じます Close #1 End Sub |
使用している技術
ファイルを読み込む
ファイルを読み込むにはOpenステートメントを使用します。
Open “読み込むファイルのパス“ For Input As #1
‘ ここに処理を記述
Close #1
公式の説明:ファイルへの入出力 (I/O) を有効にします。
Openステートメントを使うことでファイルを読み込むことができます。
1行分読み取む
Openステートメントで読み込んだデータを、1行分読み込むためにはLine Input # ステートメントを使用します。
Line Input #1, buf
公式の説明:開いているシーケンシャル ファイルから 1 行読み取って、その内容を文字列型 (String) 変数に割り当てます。
bufの部分は任意の変数名を使用できます。
カンマで分割する ※今回の重要ポイント
データをカンマで分割するにはSplit関数を使用します。
Split(“分割したい文字列”, “,”)
公式の説明:指定された数のサブ文字列が含まれる 0 ベースの 1 次元配列を返します。
Split関数の第1引数に、分割したい文字列を指定します。
Split関数の第2引数に、どの文字列で分割するかを指定します。今回はCSVファイルなので「,」を指定します。
配列の最大の要素番号を取得する
配列の最大の要素番号を取得するにはUBound関数を使用します。
UBound(配列)
公式の説明:配列の指定された次元に使用できる最大の添字を含む Long データ型を返 します。
例えば
No.1 , 商品名A , 100円
というデータをカンマで分割した場合
dataArr(0) → No.1
dataArr(1) → 商品名A
dataArr(2) → 100円
という配列ができます。
UBound関数を使用することで「2」が取得できます。
※配列の要素数は「0」から始まります。
最終行を読み取る
最終行を検知するためにはEOF関数を使用します。
EOF(1)
公式の説明:Random またはシーケンシャル Input で開かれたファイルの末尾に達した場合、Boolean 値 True を含む整数を返します。
これにより最終行を検知することができ、最終行までのループ処理が可能となります。
()の中の数字はOpenステートメントで指定した#1の数字を指定する必要があります。
実行結果
ではこのプログラムを実行してみましょう。
CSVファイルをカンマで分割して取り込むことができました。
まとめ
この記事では、CSVファイルを取り込む方法をご紹介しました。
・CSVファイルを読み込むにはOpenステートメントを使用する。
・1行取り出すにはLine Input # ステートメントを使用する。
・カンマで分割するにはSplit関数を使用し、第二引数にカンマを指定する。
CSV取り込みはよく使いますので、ご紹介しました。
ではまた。
コメント