Excelのマクロが消えたように見えるときは、最初に元ファイルのコピーを確保し、上書き保存や繰り返し実行を止めます。「一覧に表示されない」「セキュリティで実行できない」「VBAコードそのものがなくなった」「VBEが固まる」は別の症状です。原因を分けてから、保存形式・開いているブック・過去の版を確認しましょう。
最初に元ファイルを保全する
対象ファイルを別名でコピーし、元ファイルと保存先・更新日時を記録します。Excelが応答している場合でも、コードが消えた状態で元ファイルを上書きしないでください。復元や修復はコピーで試します。マクロを再実行するとシートや外部ファイルが変わることもあるため、再現確認は検証用データで行います。
症状別に確認する場所
マクロ一覧だけに出ない場合は、開いているブックとマクロの保存先、VBEで対象プロジェクトのコードが存在するかを確認します。一覧にないことだけで削除されたとは判断しません。コードが見えるのに実行できない場合は、警告文・エラー・管理ポリシーの確認へ進みます。
VBEで対象モジュールの内容が空、またはモジュール自体がない場合は、別名保存・ファイル形式変更・別のコピーを開いていないかを確認します。VBEが応答しない、表示だけがおかしい場合は、Excelのビルドやアドインなど環境側も切り分けます。これらを一つの「マクロ消失バグ」と決めつけないでください。
1. .xlsxで保存していないか確認
通常の.xlsx形式ではVBAマクロを保存できません。マクロを含むブックは、用途に合ったマクロ対応形式、例えばExcelマクロ有効ブック(.xlsm)で保存する必要があります。.xlsmから.xlsxへ保存した際の警告を承認した場合は、元の.xlsmや保存前のバックアップを探してください。
拡張子を.xlsxから.xlsmへ名前変更したり、空になったファイルを.xlsmで保存し直したりしても、失われたコードが戻るわけではありません。Microsoftのブック保存ガイドも、.xlsxに保存するとマクロが保持されない点を説明しています。
2. 開いているブックとVBAの保存先を確認
同名ファイルがダウンロードフォルダー、メール添付、OneDrive、共有フォルダーに複数存在していないか確認します。Excelのタイトルと保存先を照合し、Alt+F11でVBEを開いて対象ブックのプロジェクトを選びます。別ブック、個人用マクロブック、アドインに保存していたコードなら、対象ブックだけ開いても同じ状態にはなりません。
イベント用のコードや関数など、マクロ一覧だけでは確認しきれないものもあります。VBEのプロジェクトとモジュールを見て、コードが存在するかを先に確認します。保護されたプロジェクトを開けない場合は、所有者へ確認し、保護を回避する操作は行いません。
3. 実行ブロックとコード消失を分ける
「Microsoftによりマクロの実行がブロックされました」などの警告がある場合は、コードの消失ではなくセキュリティによる実行制限の可能性があります。インターネット由来のファイルは、Officeの設定や組織ポリシーによってマクロがブロックされます。
出所や内容を確認できないファイルで「すべてのマクロを有効」にしたり、ダウンロードフォルダー全体を信頼された場所にしたりしないでください。信頼された場所は復元機能ではなく、マクロ実行の保護に影響します。業務ファイルは提供元・管理者に正規の配布方法と許可手順を確認します。
公式説明:インターネット由来のマクロのブロック。警告を消すことと、コードを取り戻すことを混同しないでください。
4. コードが本当に失われた場合:過去の版を探す
OneDriveまたはSharePointに保存したファイルなら、バージョン履歴で消失前の版を開き、コードが残っているかを確認します。現在のファイルを別途保全したうえで、必要な版の復元を判断してください。復元するとマクロ以外のシート内容もその時点へ戻る点に注意します。
ローカルファイルは、保存前のコピー、バックアップ、元の配布ファイル、エクスポートしたVBAモジュールなどを探します。Officeのバージョン履歴がすべてのローカルファイルにあるわけではありません。Microsoftのバージョン履歴ガイドで利用条件を確認します。
自動回復は障害時に役立つ場合がありますが、手動の保存やバックアップの代わりにはなりません。残っている版にコードがなければ、設定変更で必ず復元できるとは案内できません。
5. VBEが空白になる・Excelが固まる場合
対象ファイルだけか、新しい検証用ブックでも起きるか、同じコピーを別の対応PCで開くとどうかを比較します。応答しないExcelを強制終了すると未保存内容が失われる可能性があります。正常な元ファイルを残し、問題のファイルで上書きを繰り返さないでください。
アドインの影響を調べる場合は、Windowsキー+Rからexcel /safeでセーフモード起動し、表示や応答が変わるかを確認します。通常起動と条件が異なるため、コードの復元確認とは分けます。改善する場合は有効だったアドインを記録し、一つずつ比較して戻せるようにします。
複数PCで結果が違う場合は、Excelのビット数・ビルド・アドイン・言語や地域設定などの差も記録すると調査に役立ちます。ただし差があるだけで原因と断定せず、地域設定などを全PCへ一括変更する前に、検証用のコピーで対象条件を確認してください。
更新する場合:2402へ固定しない
Excelの「ファイル」→「アカウント」で製品名・バージョン・ビルドを記録します。更新は利用中の製品と更新チャネルで提供されるサポート対象の更新を確認してください。会社で管理される端末では管理者へ相談します。
古いバージョン2402を現在の共通の解決版として指定しません。更新前後で発生条件を比較し、該当する公式の既知の問題や修正情報があるかを確認します。Officeを再インストールしても、ファイルから失われたコードが自動復元されるわけではありません。
ForceVBALoadFromSourceや一括コンパイルを一般的な復元手順にしない
レジストリ値ForceVBALoadFromSourceの追加と全ブックの再コンパイルを、すべての「マクロが消えた」症状へ共通の対処として適用しないでください。特定の環境や不具合への個別対応がある場合でも、対象版・原因・副作用・戻し方をMicrosoftサポート等の案内で確認する必要があります。
コンパイルはコードの検査であり、消えたVBAソースを生成する機能ではありません。まず保存形式と既存のコード、過去の版を調べ、根拠のないレジストリ変更や保護設定の緩和を避けます。
サポートへ伝える情報
Excelの製品・ビット数・バージョン・ビルド、Windows版、ファイル形式と保存先、発生前の操作、警告全文、一覧だけにないのかVBEのコードもないのか、別PCやコピーでの結果を整理します。ファイルを共有する場合は機密データや認証情報を除き、必要最小限の再現用ファイルを用意してください。
再発防止とまとめ
マクロ対応形式で保存し、元ファイルと世代別バックアップを確保します。VBAを変更したら検証用データで確認し、重要なコードはモジュールのエクスポートなど別の保管手段も用意します。表示不具合、実行ブロック、実際の消失を分けることが、不要な設定変更と追加のデータ損失を防ぐ出発点です。


コメント
コメント一覧 (1件)
時折記事を読ませて頂いております。勉強になります。
早速ですが、私も複数あるPCで一台のみVBAマクロが消える症状が出ていました。
更新プログラムが原因との記事もありましたが、
Excel2016(再インストールも含む)・2024で同じ症状が出ている為、違っていたようです。
結論は、Windowsの地域設定が日本語(日本)になっていなかった為でした。
設定(Windows) – 時刻と言語 -言語と地域 – 地域 -地域設定を、
“おすすめ”又は”日本語(日本)”に設定すると問題なく開けるようになりました。
私の場合は、言語に日本語と英語(米国)がインストールされていましたが、
地域設定が”英語(米国)”になっていました。
標準モジュールの名称に日本語が含まれていて、地域設定とぶつかったようです。
因みに、標準モジュールの名称を修正後も、vbaのStrConv関数でエラーが発生した為、
この原因を見つけました。
参考まで・・・