Excel VBA の実行時エラー辞典
実行時エラー '53':ファイルが見つかりません
ファイルの実在、拡張子、相対パスの基準を確認します。
よくある原因
- 読み込む CSV の名前や拡張子が変わっています。
- 相対パスの基準が変わり、別のフォルダを探しています。
- 削除や名前変更の対象ファイルが既に移動・削除されています。
- Declare ステートメントの Lib に書かれたライブラリ(DLL)が見つかりません(Microsoft の公式解説に記載のある原因です)。
直し方
- 完成したファイルパスを表示し、エクスプローラーで同じ場所を確認します。
- ローカルのファイルなら、存在する親フォルダを確認した上で Dir で名前を調べます。
- 欠けている場合は入力元へ戻り、正しいファイルを指定します。DLL の場合は提供元の導入手順を確認します。
元のブックや入力ファイルを残し、コピーで試してください。以下は一つの原因を扱う例です。Sub 全体を示していないコードは、練習用の Sub の中に記述します。
C:\VbaPractice が存在する Windows の例です。Dir は権限や接続状態によっても失敗し、存在確認後にファイルが移動される可能性もあります。
修正前
Dim fileNo As Integer
fileNo = FreeFile
Open "input.csv" For Input As #fileNo
Close #fileNo
修正後
Dim fileNo As Integer, filePath As String
filePath = "C:\VbaPractice\input.csv"
If Len(Dir(filePath)) = 0 Then
MsgBox "入力ファイルを確認してください: " & filePath
Else
fileNo = FreeFile
Open filePath For Input As #fileNo
Close #fileNo
End If
調べ方
- エラー画面の「デバッグ」が使える場合は押し、黄色で止まった行とメッセージ全文を記録します。Windows では Alt+F11 で VBE を開けます。
- 停止行の少し前を選び、F9 でブレークポイントを設定します。再実行して止めたら、F8 で一行ずつ進めます。
- 相対パスなら CurDir$ とファイル名を確認します。Workbooks.Open では別の番号が返る場合もあるため、停止した命令も記録します。
- Ctrl+G でイミディエイトウィンドウを開き、下の式を入力して Enter を押します。例の変数があるプロシージャ内で停止し、変数名は自分のコードに合わせてください。
? CurDir$, filePath
Err の情報はエラーが起きた直後に確認します。修正後は、正常な入力と問題が起きた入力の両方で結果を照合してください。