トップページ

#18_3 ファイルの入出力


テキストファイルを読み込む

Excel VBAでは、すでに開いているブックのワークシートにテキストファイルを取り込むことができます。

次のマクロを見てみましょう。指定したブックの中で指定したテキストファイルを取り込んでいます。

幾つかポイントがあるので、順番に見ていきましょう。

ファイルを開く-Openステートメント-

テキストファイルを読み込む際には、当然そのファイルを開く必要がありますが、VBAではOpenステートメントを用いることでファイルを開きます。

(Workbookを開くOpenメソッドとは別物)

ファイルを開くときの注意点として、「読み込むために開くのか」「書き込むために開くのか」という目的(モード)を指定する必要があります。

上の例では「Input」つまり、そのファイルを読み込むために開くことを宣言しているキーワードになります。

モード 対応するキーワード
追加モード Append
バイナリモード Binary
入力モード Input
出力モード Output
ランダムアクセスモード Random

Openステートメントを使用する際には、ファイル番号を「As #1」のように指定する必要があり、このステートメント以降は、このファイル番号を用いてデータの読み込み等を行うことになります。

ちなみに「Input #」ステートメントでは、カンマ区切りまでを1データとして認識し、さらにキャリッジリターン(Chr13)、改行コード(Chr(13)+Chr(10))もデータ区切りとして認識します。

上の例題では、「reidai.txt」の各レコードのデータ数が10列なので、10要素の配列変数に各データを格納してます。

さて、Input #ステートメントで各レコードを読み込んでファイルの最終行まで達すると、EPF関数がTrueを返します。したがって、上の例題のマクロでは、EOF関数がTrueを返すまでの転機処理をループしていることになるのです。

忘れがちですが、EOF(1)のカッコ内の数字は、Openステートメント実行時に割り当てられたファイル番号です。

これまでの処理が済んだら、Closeステートメントでファイルを閉じる必要があります。Closeステートメントを実行することで、そのファイルに割り当てられたファイル番号は解放されます。