【Excel VBA】タブ区切りのファイルを読み込む方法

この記事では以下の方法を知ることができます。

この記事で学べること

VBAを使用してタブ区切りのファイルをExcelに取り込む方法

タブ区切りのファイルを取り込むプログラム

以下はタブ区切りのファイルを読み込むコードです。

使用している技術

ファイルを読み込む

ファイルを読み込むにはOpenステートメントを使用します。

Openステートメント

Open 読み込むファイルのパス For Input As #1

  ‘ ここに処理を記述

Close #1

公式の説明:ファイルへの入出力 (I/O) を有効にします。

Openステートメントを使うことでファイルを読み込むことができます。

1行分読み取む

Openステートメントで読み込んだデータを、1行分読み込むためにはLine Input # ステートメントを使用します。

Line Input # ステートメント

Line Input #1, buf

公式の説明:開いているシーケンシャル ファイルから 1 行読み取って、その内容を文字列型 (String) 変数に割り当てます。

bufの部分は任意の変数名を使用できます。

タブキーで分割する ※今回の重要ポイント

データをタブキーで分割するにはSplit関数を使用します。

Split関数

Split(“分割したい文字列”, vbTab)

公式の説明:指定された数のサブ文字列が含まれる 0 ベースの 1 次元配列を返します。

Split関数の第1引数に、分割したい文字列を指定します。

Split関数の第2引数に、どの文字列で分割するかを指定します。今回はTSVファイルなので「vbTab」を指定します。

配列の最大の要素番号を取得する

配列の最大の要素番号を取得するにはUBound関数を使用します。

UBound関数

UBound(配列)

公式の説明:配列の指定された次元に使用できる最大の添字を含む Long データ型を返 します。

例えば

No.1 , 商品名A , 100円

というデータをカンマで分割した場合

dataArr(0) → No.1

dataArr(1) → 商品名A

dataArr(2) → 100円

という配列ができます。

UBound関数を使用することで「2」が取得できます。

※配列の要素数は「0」から始まります。

最終行を読み取る

最終行を検知するためにはEOF関数を使用します。

EOF関数

EOF(1)

公式の説明:Random またはシーケンシャル Input で開かれたファイルの末尾に達した場合、Boolean 値 True を含む整数を返します。

これにより最終行を検知することができ、最終行までのループ処理が可能となります。

()の中の数字はOpenステートメントで指定した#1の数字を指定する必要があります。

実行結果

ではこのプログラムを実行してみましょう。

タブ区切りのファイルをタブキーで分割して取り込むことができました。

まとめ

この記事では、CSVファイルを取り込む方法をご紹介しました。

この記事で学んだこと

・CSVファイルを読み込むにはOpenステートメントを使用する。

・1行取り出すにはLine Input # ステートメントを使用する。

・タブキーで分割するにはSplit関数を使用し、第二引数にvbTabを指定する。

タブキーで区切られたファイルは現場ではよく使用されています。

今回の方法で分割しExcelに読み込んで利用しましょう。

ではまた。

コメント