「フォルダを整理しただけなのに、Excelのマクロが全部動かなくなった……」「しかもマクロを作った人はもう退職していて、誰にも聞けない……」。こんな悲鳴、職場でよく聞きませんか?
2026年4月、新年度でファイルサーバーの整理やフォルダ構成の見直しをする会社は多いですが、フォルダ名やファイルの保存場所を変えると、Excel VBAマクロのパス参照が壊れてエラーになることがあります。この記事では、その原因5つと自分で直す方法をわかりやすく解説します。
そもそもなぜフォルダ名を変えるとマクロが壊れるの?
Excel VBA(マクロ)の中には、ファイルやフォルダの場所を「フルパス」(絶対パス)で直接書き込んでいるケースがとても多いです。たとえばこんなコード:
Workbooks.Open "C:\Users\tanaka\Documents\売上管理\data.xlsx"
この場合、「売上管理」フォルダの名前を「2026年度_売上管理」に変えた瞬間、マクロは「そんなファイルないよ!」とエラーを吐きます。つまり、VBAの中に書かれたパス(住所)と、実際のフォルダの場所がズレるのが根本原因です。
原因1: VBAコード内にフルパスがハードコードされている
いちばん多い原因がこれです。マクロを作った人が、ファイルの場所を直接ベタ書きしているパターン。
「C:\共有フォルダ\経理部\月次報告\テンプレート.xlsx」のように、フォルダ階層がそのままコードに埋め込まれていると、どこか1つでもフォルダ名を変えた時点でアウトです。
直し方
VBAエディタ(Alt + F11で開けます)で、コード内の古いパスを検索して新しいパスに置き換えましょう。「Ctrl + H」で一括置換するのが効率的です。
たとえば「売上管理」→「2026年度_売上管理」のように、変更したフォルダ名だけを置換すればOKです。
原因2: ThisWorkbook.PathがOneDrive環境でURL形式になっている
2026年現在、Microsoft 365を使っている職場ではOneDriveやSharePoint経由でファイルを開くのが当たり前になっています。
ここで厄介なのが、VBAの ThisWorkbook.Path(今開いているファイルの場所を取得するコード)が、ローカルのパスではなくインターネットのURL形式(https://会社名-my.sharepoint.com/...)を返すようになったこと。
Microsoftの公式ブログによると、Microsoft 365のバージョン1903以降でこの仕様変更が入っています。
このURL形式のパスだと、Dir関数やFileSystemObjectが動かず、「パスが見つかりません」系のエラーになります。
直し方
Environ("OneDrive") や Environ("OneDriveCommercial") を使って、URL形式のパスをローカルパスに変換する処理を追加します。ざっくり言うと「URLの先頭部分をローカルのOneDriveフォルダに差し替える」イメージです。
原因3: VBAの参照設定(References)が壊れている
VBAには「参照設定」という仕組みがあり、外部のライブラリ(部品)を使うときに「このファイルを参照してね」と登録しています。
ファイルの移動やOfficeのアップデートで、この参照先がズレると「MISSING」という表示になり、マクロが動かなくなります。
直し方
- VBAエディタを開く(Alt + F11)
- メニューから「ツール」→「参照設定」を選ぶ
- 「MISSING: ○○」と表示されている項目を探す
- チェックを外して、正しいライブラリにチェックを入れ直す
Microsoftの公式ドキュメントにも、MISSINGになった参照設定の修正手順が詳しく記載されています。
原因4: ファイルパスが260文字の上限を超えている
Windowsにはファイルパスの長さ制限があり、従来は最大260文字までという制約がありました。フォルダ名を長くしたり、階層を深くしすぎると、この制限に引っかかります。
とくに「2026年度_第1四半期_営業部_月次売上報告書」みたいな長い名前のフォルダを入れ子にすると、あっという間に260文字を超えます。
直し方
- フォルダ名をできるだけ短くシンプルにする(「2026Q1_営業_月次」など)
- Windows 11の場合、ロングパスを有効にする設定がある(グループポリシーで「Win32の長いパスを有効にする」をオン)
- ただしVBAの一部の関数(Dir関数など)はロングパスに対応していないので、パス自体を短くするのがベスト
原因5: ネットワークドライブの割り当て(マッピング)が変わった
会社のファイルサーバーに「Z:ドライブ」のようにネットワークドライブを割り当てている場合、年度替わりでサーバー構成が変わったり、ドライブレターが変更されることがあります。
VBAで「Z:\共有\売上.xlsx」と書かれていると、Z:ドライブの割り当てが変わった時点で動かなくなります。
直し方
- ドライブレター(Z:など)の代わりにUNCパス(
\\サーバー名\共有フォルダ\...)を使うのが確実 - IT部門にネットワークドライブの割り当て状況を確認する
- VBAコード内のドライブレターをUNCパスに書き換える
マクロを作った人がもういない!そんなときの応急処置
「作った人が退職してコードの意味がわからない……」というケースは本当に多いです。VBAの属人化問題は多くの企業が直面している課題です。まずは以下の手順で状況を把握しましょう。
- VBAエディタを開く(Alt + F11)
- Ctrl + F で「C:\」「\\」「http」を検索して、パスが書かれている場所を特定する
- 見つかったパスが古い場所を指していたら、新しいパスに書き換える
- わからない場合は「ツール」→「参照設定」で「MISSING」がないかも確認
要するに、「VBAの中で住所(パス)を使っている場所を全部見つけて、新しい住所に書き換える」のが基本の対処法です。
なお、2026年以降MicrosoftはVBScriptのコンポーネントを段階的に廃止する計画を発表しています。長期的にはVBAマクロ自体をPower AutomateやOffice Scriptsに移行することも検討した方がよいでしょう。
FAQ
VBAエディタの開き方がわかりません
Excelを開いた状態で「Alt + F11」キーを押すと、VBAエディタが開きます。もしマクロタブが表示されていない場合は、「ファイル」→「オプション」→「リボンのユーザー設定」で「開発」タブにチェックを入れてください。
パスを書き換えたのにまだエラーが出ます
複数のモジュール(標準モジュール、シートモジュール、ThisWorkbookなど)にパスが分散している可能性があります。VBAエディタで「Ctrl + F」→「検索先: プロジェクト全体」に変更してから検索すると、すべてのモジュールを一括で調べられます。
OneDriveのパス問題を根本的に解決する方法はありますか?
OneDriveの同期設定で「Officeファイルの同期」をオフにする方法がありますが、共同編集機能が使えなくなるデメリットがあります。コード側でEnviron("OneDrive")を使ってローカルパスに変換する処理を入れるのが、機能を維持しつつ対応できる方法です。
マクロの中身を見ようとしたらパスワードがかかっていて開けません
VBAプロジェクトにパスワードが設定されている場合、パスワードがわからないとコードの編集はできません。作成者や管理者に確認するか、IT部門に相談してください。なお、パスワード解除ツールは存在しますが、ライセンス規約に抵触する可能性があるので注意が必要です。
参考文献
- VBA マクロの Office バージョンアップ時の互換性 — Japan Office Client Support Blog
- データベースに不足している参照または壊れた参照が含まれている — Microsoft Learn
- 2020年4月のセキュリティ更新によるVBAからのネットワーク上の参照への影響 — Japan Office Client Support Blog
- Excel VBA(マクロを含む)による業務の属人化を解消するためのケース別5つの方法 — iSoftBrain






