【VBA】テキストファイルを読み込む方法【セルに書き込みまで】

本記事では「VBAでテキストファイルを読み込む処理」について書いていきます。

 

ここで紹介する内容は下の通りです。

・「Line Input」で一行ずつファイル内データを読み込む方法

・「FileSystemObject」で一気にファイル内のデータを読み込む方法

 

では、さっそく解説していきます。

スポンサーリンク



テキストファイルのデータを1行ずつ読み込む

ここで使うデータは下の「テキストファイル」になります。

 

テキスト内のデータを1行ずつ全てを読み込む

下のコードでテキストファイルの全てのデータを読み込みコードです。

 

3行目:「Open」ステートメントでテキストファイルを開く。

4行目:「現在位置がファイルの末尾に達するまで」処理をループする指定をする

EOF(ファイル番号):現在位置がファイルの末尾に達したときに”True”を返す

Until:”true”になるまでDo~Loopの間の処理を繰り返す

※Do Loopが分からない人は『Do Loopの使い方』を参考にする

5行目:読み込み処理

※Line Inputが分からない人は『Line Inputの使い方』を参考にする

7行目:ここまでがループ範囲

8行目:3行目で開いたファイルを閉じる(閉じるときはファイル番号で指定する)

 

【応用編】読み込んだデータをエクセルに書き込む

「Line Inputを使ってデータを読み込むだけ」というのは実用性に欠けます。

なので、ここでは”読み込んだデータをエクセルに書き込んでいく”というコードを書いていきます。

※A列上でずらしながら、1つのセルに1行のデータを入れる。

 

上のコードは前回のコードに6,7行目の処理を追加しただけです。

7行目:指定したセル内に読み込んだデータ(str)を入れる。

 Cells(行番号,列番号)

列番号を”1”に固定することでA列で固定した状態になる。

行番号に当たる、変数iを6行目で「i+1」することで、ループするごとに行番号が1ずつ増え、1行ずつずれていく。

 

一気にデータを読み込む(FileSystemObject)

上ではLine Inputでファイルの読み取りを行いました。

 

ですが、実はファイル読み込み時によく使われるのは『FileSystemObjectクラス』だったりします。

そのFileSystemObjectを使ったコードは下の通りです。

 

FileSystemObjectを使ったファイル読み込みは全てを1つの変数に詰め込みます。

なので、そのまま読み込んだ値をセルに移すと”すべての文字列が1つのセルに入ってしまう”のです。

なので、上のコードでは取得した文字列をSplit関数を使って1行ずつに分けて、一行ずつ別々のセルに入れていくようにしています。

3行目:FileSystemObjectのインスタンス化

4行目:対象ファイルを開く

5行目:ファイル内のデータを全て読み込む

6行目:対象ファイルを閉じる

9行目:”改行”を区切り文字にして、1行ずつ区切られた配列を返す

10行目:「0から配列(tmp)のインデックス最大値(UBound関数で取得)までループを繰り返す」を指定

11行目:A列で固定して、A1から順に分けた文字列を入れていく

 

スポンサーリンク

コメント