Excel VBA の実行時エラー辞典
実行時エラー '76':パスが見つかりません
ファイル名より前のフォルダ、ドライブ、共有先が存在するか確認します。
よくある原因
- 出力先のフォルダをまだ作成していません。
- PC 移行でユーザーフォルダやドライブ文字が変わっています。
- 共有フォルダの名前が変更され、古いパスを使っています。
- 親フォルダがない状態で、その下のフォルダを MkDir しようとしています。
直し方
- エクスプローラーでドライブから順にたどり、どの階層まで存在するか確認します。
- 共有先なら接続状態と正しい名前を確認します。ローカルなら保存先の設定を直します。
- 新規フォルダが必要なら、存在する親フォルダの下へ一階層ずつ作成します。
元のブックや入力ファイルを残し、コピーで試してください。以下は一つの原因を扱う例です。Sub 全体を示していないコードは、練習用の Sub の中に記述します。
C:\VbaPractice が存在し、reports・daily と同名のファイルがない練習用環境を想定しています。フォルダを作成する例で、ネットワークの切断を修復するものではありません。
修正前
MkDir "C:\VbaPractice\reports\daily"
修正後
Dim parentPath As String
parentPath = "C:\VbaPractice\reports"
If Len(Dir(parentPath, vbDirectory)) = 0 Then
MkDir parentPath
End If
If Len(Dir(parentPath & "\daily", vbDirectory)) = 0 Then
MkDir parentPath & "\daily"
End If
調べ方
- エラー画面の「デバッグ」が使える場合は押し、黄色で止まった行とメッセージ全文を記録します。Windows では Alt+F11 で VBE を開けます。
- 停止行の少し前を選び、F9 でブレークポイントを設定します。再実行して止めたら、F8 で一行ずつ進めます。
- 途中までのパスを一つずつ確認します。URL は通常のローカルフォルダと同じ方法では扱えません。
- Ctrl+G でイミディエイトウィンドウを開き、下の式を入力して Enter を押します。例の変数があるプロシージャ内で停止し、変数名は自分のコードに合わせてください。
? parentPath
Err の情報はエラーが起きた直後に確認します。修正後は、正常な入力と問題が起きた入力の両方で結果を照合してください。