Excel VBA の実行時エラー辞典

実行時エラー '62':ファイルにこれ以上データがありません

空ファイルや予定より短いファイルから、末尾を越えて読み込んでいないか確認します。

よくある原因

直し方

  1. 実際のファイルの行数と、ヘッダーの扱いを確認します。
  2. テキストを Input モードで読む場合は、読む直前に EOF で末尾かどうか判定します。
  3. 空ファイルと一行だけのファイルでも確認し、読み終えたら Close します。

元のブックや入力ファイルを残し、コピーで試してください。以下は一つの原因を扱う例です。Sub 全体を示していないコードは、練習用の Sub の中に記述します。

存在するテキストファイルを一行ずつ読む例です。Binary モードの読み取りは、ファイル長と読み取り位置に応じた別の確認が必要です。

修正前

Dim fileNo As Integer, lineText As String, i As Long
fileNo = FreeFile
Open "C:\VbaPractice\input.txt" For Input As #fileNo
For i = 1 To 100
    Line Input #fileNo, lineText
Next i
Close #fileNo

修正後

Dim fileNo As Integer, lineText As String
fileNo = FreeFile
Open "C:\VbaPractice\input.txt" For Input As #fileNo
Do While Not EOF(fileNo)
    Line Input #fileNo, lineText
    Debug.Print lineText
Loop
Close #fileNo

調べ方

  1. エラー画面の「デバッグ」が使える場合は押し、黄色で止まった行とメッセージ全文を記録します。Windows では Alt+F11 で VBE を開けます。
  2. 停止行の少し前を選び、F9 でブレークポイントを設定します。再実行して止めたら、F8 で一行ずつ進めます。
  3. ファイルを開いている間に EOF を確認します。Close 後の番号には使いません。
  4. Ctrl+G でイミディエイトウィンドウを開き、下の式を入力して Enter を押します。例の変数があるプロシージャ内で停止し、変数名は自分のコードに合わせてください。
? EOF(fileNo), LOF(fileNo)

Err の情報はエラーが起きた直後に確認します。修正後は、正常な入力と問題が起きた入力の両方で結果を照合してください。

関連エラー

確認した公式資料