VBAで使用できる関数です。
ファイルをOpenステートメント(モードはRandomまたはInput)で開いているときに、読み込み位置が末尾にあるかどうかをブール型の値(TrueまたはFalse)で返します。
使用例
例1
サンプルとして次のようなファイルを用います。
ファイルのフルパスは「E:テストフォルダ¥test.txt」とします。
コード
Openステートメントで上記ファイルを開き、ファイル番号は1(#1)としています。
そしてLine Inputでファイルを1行ずつ読み込みMsgBoxで表示します。
読み込み位置がファイル末尾に達しているかどうかをEOF関数で判定し、末尾に達したらループを抜けて終了します。EOF関数の引数はファイル番号(「#」なしの「1」)で指定します。ちなみにOpenもCloseも「#1」ではなく「1」と指定しても動きますが(Line Inputでは「#1」としないとエラー)ここでは区別のため統一しています。
Sub Func_EOF() Dim txt_line As String Open "E:テストフォルダ\test.txt" For Input As #1 Do While Not EOF(1) Line Input #1, txt_line MsgBox txt_line Loop Close #1 End Sub
※¥がバックスラッシュとして表示されているかもしれません(以下同様)。
出力
ダイアログが2回表示されて終了します。ファイルの行数が2行なのでコードのDo Whileループは2周して終了している、ということになります。
例2
コード
上記のファイルについて、各行の読み取りの前後にそれぞれEOF関数の値を表示します。
Sub Func_EOF() Dim txt_line As String Open "E:テストフォルダ\test.txt" For Input As #1 Do While Not EOF(1) MsgBox "読み出し前EOF : " & EOF(1) Line Input #1, txt_line MsgBox "読み出し後EOF : " & EOF(1) Loop Close #1 End Sub
出力
ダイアログが4回表示されます。
左から順に、1行目読み込み前、1行目読み込み後、2行目読み込み前、2行目読み込み後の表示です。
ファイルの2行目のテキストを読み込んだ時点でEOFの値がTrueになっていることがわかります。
書式
EOF(ファイル番号)
ファイル番号はOpenステートメントによりファイルを開く際に指定した番号です。
ナンバーサイン(#)は不要です。
備考
-