日々の業務でExcel VBAを使っていると思います。急にマクロが止まってしまった経験はありませんか?実行時エラー53のメッセージが出ることがあります。ファイルはそこにあるはずなのにと途方に暮れますよね。私もこのエラーには何度か悩まされてきました。
パスを何度も確認することがあるでしょう。ファイル名を打ち直しても解決しないと焦ります。もうお手上げだと感じてしまいますよね。マクロが止まると作業が中断されてしまいます。原因が分からずに時間だけが過ぎていく状況は辛いです。本当に焦りやストレスを感じるものでしょう。
この記事では実行時エラー53の対処法を解説します。パスの指定ミスや拡張子の問題、カレントディレクトリのずれ、ネットワークドライブ特有の落とし穴まで、私が実際に確認して解決に至った手順を体験談とともに紹介します。順番さえ分かっていれば、慌てず一つずつ潰していけるはずです。
ここで一度立ち止まって考えてみてください
Pythonや自動化スキルを体系的に習得して、ITエンジニアとしてのキャリアを切り開きたい方には「Enjoy Tech!(エンジョイテック)」が選択肢のひとつです。現役エンジニアのサポートで、未経験から実践的なスキルを身につけられます。
VBAエラー53「ファイルが見つからない」の謎
私がVBAを触り始めたばかりの頃の出来事です。私はよくこの実行時エラー53に遭遇しました。
VBA初心者の頃、ファイルの削除処理を作成しました。突然エラー53が出てマクロが停止したのです。本当に困り果てたのを覚えています。
別のExcelファイルを開くときにエラーが出ます。ファイルを削除するマクロでも頻繁に出るエラーです。コピーする際にも停止してしまいました。バックアップを取ろうとして停止することもあります。テキストファイルを読み込む際にも発生する現象です。フォルダの階層が深い業務システムほど、この手のエラーに遭遇しやすい印象があります。動く日と動かない日があるように感じ、余計に原因が分かりにくく感じたものです。
メッセージが出るたびにファイルを確認しました。確かに指定した場所に存在しているはずです。なぜ見つからないのだろうと頭を抱えていました。このエラーはファイルが見つからないときに発生します。VBAが指定されたパスを探せないのが原因です。
ファイルが見つからないエラー53の原因
ファイル操作系の命令を使うと発生しやすいです。指定されたパスにファイルがないと判断されます。その結果、Err.Number=53と表示されるのです。自分の目でファイルがあることを確認するでしょう。だからこそエラーが出ると混乱してしまいます。しかし見つからないと判断される理由が存在するのです。そこには具体的な原因が隠されています。

エラー53回避のパス確認術
エラー53が出たときにまず確認すべきことがあります。コード内のファイルパスが正しいかどうかの確認です。これは非常に基本的なチェック項目といえます。焦っているときほど見落としやすいポイントでしょう。
パスの指定方法には大きく分けて2種類あります。絶対パスと相対パスの2つです。前者はドライブレターから始まる完全な記述方式になります。相対パスは現在の場所を基準とした指定方法になります。
私は共有フォルダのCSVを読み込む処理を作りました。自分のPCでは問題なく動いていたのです。しかし同僚のPCで実行するとエラーが出たのです。調べてみるとアクセスパスが微妙に異なっていました。私のPCでは途中のフォルダ名がShareだったのです。同僚のPCではSharedになっていたのです。たった一文字の違いでもエラーの引き金になります。VBAには全く別の場所として認識されてしまうのです。人が見れば些細な表記ゆれでも、VBAにとっては存在しないパスと同じ扱いになるのだと痛感しました。
ファイルパス確認のポイント
ファイルパスを確認する際は細心の注意を払いましょう。大文字と小文字の違いがないかチェックしましょう。記号の向きや余分なスペースにも気をつけてください。特に、パスを手で入力していると小さな間違いが入り込みやすいです。エクスプローラーから正確なパスをコピーしましょう。それをVBAコードに貼り付けるのが最も確実な方法です。

エクスプローラー拡張子表示設定の落とし穴
見落としがちなのがエクスプローラーの表示設定になります。設定が原因でファイル名を誤認するケースがあります。Windowsの初期設定を確認してみてください。拡張子を表示しない設定になっていることが多いです。この設定がファイル操作の思わぬ落とし穴になります。
report.xlsxを開こうとしたとしましょう。しかし実際は二重拡張子になっていたとします。この状況ではファイルが見つからずエラーを引き起こすのです。
二重拡張子、拡張子表示でトラブル回避
私は以前、顧客リストをCSVファイルで扱うマクロを作成しました。画面上ではcustomer_list.csvと見えていたのです。VBAコードにもそのままの名前で記述したのです。しかし、マクロを実行するとエラー53が頻発し悩みました。結局エクスプローラーの表示設定を変更することにしたのです。実際のファイル名は別のものだったと気づいたのです。末尾にtxtが付いた二重拡張子になっていました。担当者がデータを保存した際のミスが原因だったのです。誤って拡張子を二重につけてしまっていたのです。
それ以来、ファイルを受け取ったら必ず拡張子表示をオンにしてから作業する習慣がつきました。この設定を一度変えておくだけで、二重拡張子に気づけずに時間を無駄にすることがなくなりました。他の担当者に共有する資料でも、拡張子を表示しておくよう合わせて伝えています。

相対パスによるカレントディレクトリのずれ
相対パスを使ってファイル操作をしている状況を想像してみましょう。このときカレントディレクトリがずれることがあります。それが原因でファイルが見つからないエラーになるのです。カレントディレクトリは基準となるフォルダを指します。この基準点がずれると想定外のトラブルを引き起こしかねません。ファイルは同じ場所にあるのに見つけられなくなります。
実行方法によって基準が変わる点には注意が必要です。VBEを開いてF5キーで実行した場合を考えます。ファイルをダブルクリックして開いた場合と比較しましょう。両者でカレントディレクトリが異なることがあるからです。VBEから実行するとファイルのフォルダが基準になります。ダブルクリック実行だと親フォルダが基準になるのです。環境によって挙動が変わることがあるので注意してください。相対パスに頼らず、処理の冒頭でカレントディレクトリを明示的に指定しておくと安心です。ThisWorkbook.Pathを基準にパスを組み立てる方法も、環境差を吸収する手段として有効です。
カレントディレクトリずれ エラー53
同僚のPCで共有フォルダのCSVを読み込もうとしました。すると実行時エラー53が出てしまい頭を抱えたのです。パスは相対パスで指定していたのが原因です。同僚のPCではファイルの場所の関係性が異なっていました。カレントディレクトリのずれに気づくまで丸一日を要したのです。

ネットワークドライブ・クラウドのパス問題
社内システムでネットワークドライブを利用すると思います。クラウドストレージにファイルを置くこともあるでしょう。これらも実行時エラー53の原因になることがあります。これらの環境はパスの有効性が変動しやすいのが特徴です。同期状態によってもパスが変わってしまうでしょう。そのため決め打ちのパス指定はエラーを引き起こします。
ネットワークドライブはローカルドライブのように見えるはずです。しかし実際はネットワーク上の別のサーバーに存在しています。これが一時的に切断されているとエラーの要因になるでしょう。ドライブレターの割り当てがPCごとに異なることもあります。その場合も指定されたパスにファイルを見つけられません。
AさんのPCではZドライブにマッピングされているとします。BさんのPCではYドライブになっているかもしれません。するとAさんのPCで動くマクロがBさんのPCでは止まります。
OneDrive同期・パスエラーと処理停止
OneDriveも同様のトラブルが起きやすい環境といえます。ファイルがクラウド上にのみ存在するケースも少なくありません。ローカルPCに同期されていないとファイルを見つけられないのです。またOneDriveのパスはユーザー名を含みます。他のPCで実行するとパスが無効になることも考えられるでしょう。
ネットワークドライブのパスエラーで処理が止まってしまい、手動でやり直すのに20分ほどかかりました。
Dir関数でファイル存在確認とエラー対策
ここまで紹介した原因を一つずつ確認してみましょう。パスや設定を修正しても再びエラーが出ることがあります。そんなときは防御的なプログラミングを取り入れるべきです。コードを工夫することをぜひ検討してみてください。
ファイル操作を行う前に存在確認をする仕組みを作ります。VBA自身でファイルがあるかを確認する手法です。最も簡単なのはDir関数を使ってチェックするやり方でしょう。Dir関数はファイルが存在すればファイル名を返します。存在しなければ空の文字列を返すという仕組みを利用してください。この特性を活かしてファイル操作の前に存在を確認します。
エラー対処と予防策
If文で条件分岐させるのが一般的なやり方になるでしょう。存在しない場合は処理をスキップさせることができます。専用のエラーメッセージを表示させるのも良いアイデアです。ファイル名やパスを画面に表示してあげるだけでも、次に確認すべき場所がすぐに分かるようになります。エラーが起きた瞬間の状況をログに残しておくと、後から原因を振り返るときの手がかりになるでしょう。テキストファイルに日時とパスを書き出すだけでも手がかりになります。
何度パスを直しても特定の日だけエラーが出ました。原因はネットワークの瞬断やサーバーのメンテナンスだったのです。Dir関数で事前にチェックするコードを追加したのです。それ以降はエラーで止まることがほとんどなくなりました。

VBA実行時エラー53 解決手順
このエラーは多くの人が経験するものですが、原因は多岐にわたります。ファイルはあるはずなのにと頭を抱えがちですが、裏には具体的な原因が隠れていることがほとんどです。パスの指定ミスや表示設定、ネットワーク特有の問題を順に確認しましょう。
エラーが発生したときにはまず慌てないことが大切です。以下の順番で一つずつ確認していくことをおすすめします。
まずはVBAコード内のファイルパスの正確性を確認します(エクスプローラーからコピーするのが確実です)。次にWindowsの拡張子表示設定を確認し、二重拡張子になっていないかチェックします。続いてカレントディレクトリのずれをCurDirで調べ、必要に応じて明示的にパスを指定します。
ネットワークドライブやOneDriveの有効性も確認項目です。接続や同期状態をチェックし、UNCパスの使用も検討しましょう。最後に、Dir関数で事前にファイルの存在を確認する防御的なコーディングを取り入れると安心です。
エラー解決、VBAスキル向上
私の場合、実行時エラー53の原因特定から解決までにかかった時間は平均30分程度でした。
確認手順を一つずつ丁寧に行うことが解決への近道です。きっとエラーの原因を特定して解決に導けることでしょう。エラーはマクロをより堅牢にするための貴重なヒントです。諦めずに一つずつ問題を解決していくことが大切になります。あなたのVBAスキルもさらに向上していくことでしょう。
無料プレゼント
Excel業務を自動化する前に確認するチェックリスト(PDF)
自動化していい作業かどうか、VBAかPythonか、最初に避けるべき落とし穴。実務でよく迷うポイントを1枚にまとめました。メールアドレスだけで受け取れます。
¥980 ミニキット
コピペで動かせる3スクリプト+自動化チェックリスト
最新ファイルの自動選択・部署名ゆれの正規化・CSV文字コード確認の3本セット。今週の作業を1つだけ楽にするための最小キットです。
関連リンクとチェックリスト
関連書籍
Excel・VBA関連書籍を、手元で見返せる形にしておきたい場合
ExcelやVBAのトラブルは、基本の考え方をあとから見返せるだけでかなり楽になります。手元に1冊置いておくと、同じエラーで止まったときに確認しやすいです。
学習サービスとアンケート
このスキルを活かしてさらに前へ進むなら
PythonやExcel自動化スキルを持ったまま、ITエンジニアとして転職したい方には「EBAエデュケーション」が選択肢です。企業が求めるエンジニア像に合わせたカリキュラムで、実務直結のスキルを習得できます。
[アンケート] この記事は役に立ちましたか?

