※本ページにはプロモーション(広告)が含まれています
Excelでマクロを作成したのに、保存したらマクロが消えていた――そんな経験はありませんか?「せっかく時間をかけて作ったVBAコードが全部なくなった」「保存時に警告が出たけど、よくわからず”はい”を押してしまった」という声は非常に多く聞かれます。
この問題の多くは、ファイル形式の選択ミスが原因です。Excelには「.xlsx」と「.xlsm」という2つの主要なファイル形式がありますが、マクロを含むファイルを「.xlsx」で保存してしまうと、VBAコードがすべて削除されてしまいます。
また、Microsoft 365の普及に伴い、OneDriveやSharePointでの保存時に発生する問題や、セキュリティ設定によるマクロのブロックなど、原因は多岐にわたります。
この記事では、Excelでマクロ有効ブックが保存できない・マクロが消える原因と具体的な対処法を、初心者にもわかりやすく徹底解説します。2026年最新のMicrosoft 365環境にも対応した内容ですので、ぜひ最後までお読みください。
この記事でわかること
- Excelのファイル形式「.xlsx」と「.xlsm」の違いと正しい使い分け
- マクロが消える・保存できない7つの主な原因
- マクロ有効ブック(.xlsm)として正しく保存する手順
- 「信頼できる場所」の設定でマクロを常に有効にする方法
- OneDrive・SharePoint環境でのマクロ保存の注意点と制限
- Excel Web版(ブラウザ版)でのマクロの扱い方
- VBAプロジェクトの保護とバックアップ方法
Excelのファイル形式「.xlsx」と「.xlsm」の違い
マクロの保存トラブルを理解するために、まずExcelの主要なファイル形式の違いを知っておきましょう。これを知らないと、何度やっても同じミスを繰り返すことになります。
ファイル形式の比較表
| ファイル形式 | 拡張子 | マクロ対応 | 用途 |
|---|---|---|---|
| Excel ブック | .xlsx | 非対応(マクロ不可) | 通常のデータ入力・表計算 |
| Excel マクロ有効ブック | .xlsm | 対応(マクロ保存可能) | VBAマクロを含むファイル |
| Excel バイナリブック | .xlsb | 対応(マクロ保存可能) | 大容量データ・高速処理 |
| Excel 97-2003 ブック | .xls | 対応(旧形式) | 旧バージョンとの互換性 |
| Excel テンプレート | .xltx | 非対応 | マクロなしテンプレート |
| Excel マクロ有効テンプレート | .xltm | 対応 | マクロ付きテンプレート |
「.xlsx」形式はセキュリティのためにマクロの保存が許可されていません。マクロを含むファイルは必ず「.xlsm」または「.xlsb」形式で保存してください。これが最も多い原因であり、最も簡単に防げるミスです。
なぜ.xlsxではマクロが保存できないのか
Excel 2007以降、Microsoftはファイル形式を大幅に変更しました。旧形式の「.xls」は1つのファイルにすべての情報を格納していましたが、新形式ではXMLベースの構造に変わり、セキュリティ向上のためにマクロの有無でファイル形式が分離されました。
「.xlsx」形式はマクロを含まないことが保証されているため、企業のIT部門やセキュリティソフトが安全なファイルとして扱えます。一方、マクロを含む可能性がある「.xlsm」は開く際に警告が表示され、ユーザーが明示的に許可する必要があります。
マクロが消える・保存できない7つの主な原因
マクロが消えてしまう、あるいは保存時にエラーが発生する原因は複数あります。それぞれの原因を詳しく見ていきましょう。
原因1:ファイル形式が「.xlsx」になっている
最も多い原因です。Excelのデフォルトの保存形式は「Excel ブック(.xlsx)」であるため、意識しないと自動的にマクロが保存できない形式で保存されます。
この場合、保存時に「次の機能はマクロなしのブックに保存できません」という警告ダイアログが表示されます。ここで「はい」を選択してしまうと、マクロが削除された状態で保存されてしまいます。
原因2:「名前を付けて保存」で形式を変更し忘れた
既存の.xlsmファイルを「名前を付けて保存」する際に、ファイルの種類が自動的に「.xlsx」に変わってしまうケースがあります。特にファイル名だけを変更して保存するとき、ファイル形式の確認を忘れがちです。
原因3:セキュリティ設定でマクロがブロックされている
2022年以降、MicrosoftはインターネットからダウンロードしたVBAマクロをデフォルトでブロックするセキュリティポリシーを導入しました。これにより、メールの添付ファイルやWebからダウンロードしたマクロ有効ブックは、開いてもマクロが実行できず、保存し直しても正常に動作しないことがあります。
原因4:OneDrive・SharePointの自動保存による問題
OneDriveやSharePointに保存されたExcelファイルは自動保存が有効になることがあります。自動保存が動作すると、ファイルは現在の形式で保存されるため、もし.xlsx形式で開かれていた場合、マクロが含まれていても.xlsx形式のまま保存されてしまいます。
また、OneDrive環境ではファイルパスがURL形式(https://…)になるため、VBAのFileSystemObjectやDir関数が正常に動作しないケースもあります。
原因5:Excel Web版(ブラウザ版)で編集している
Excel for the Web(ブラウザ版Excel)では、VBAマクロの作成・実行・編集がすべて不可です。マクロを含む.xlsmファイルをブラウザで開いて編集・保存すると、マクロが失われる可能性があります。
原因6:VBAプロジェクトが破損している
VBAプロジェクト自体が破損していると、保存時にエラーが発生することがあります。ファイルのサイズが急に大きくなった、開くのに異常に時間がかかる、VBE(Visual Basic Editor)を開くとフリーズするなどの症状がある場合は、プロジェクトの破損が疑われます。
原因7:外付けストレージから直接開いている
USBメモリや外付けHDDに保存されたマクロ有効ブックは、セキュリティ上の理由からマクロの実行がブロックされることがあります。「信頼できる場所」としてネットワークパスやリムーバブルドライブが登録されていない場合、マクロが無効化された状態で開かれ、そのまま保存するとマクロが失われることがあります。
対処法1:マクロ有効ブック(.xlsm)として正しく保存する
最も基本的な対処法です。マクロを含むファイルは、必ず「Excel マクロ有効ブック(*.xlsm)」形式で保存しましょう。
手順(名前を付けて保存)
ステップ1:Excelで対象のファイルを開きます。
ステップ2:メニューバーの「ファイル」タブをクリックします。
ステップ3:「名前を付けて保存」を選択します(ショートカットキー「F12」でも可)。
ステップ4:保存先のフォルダを選んだら、「ファイルの種類」のドロップダウンメニューをクリックします。
ステップ5:一覧から「Excel マクロ有効ブック (*.xlsm)」を選択します。
ステップ6:ファイル名を確認し、「保存」ボタンをクリックします。
保存後、タイトルバーのファイル名が「○○.xlsm」になっていることを確認してください。「.xlsx」のままであればマクロは保存されていません。
警告ダイアログが表示された場合の対応
「次の機能はマクロなしのブックに保存できません」というメッセージが表示された場合は、以下のように対応してください。
| ボタン | 動作 | 推奨 |
|---|---|---|
| 「はい」 | マクロを削除して.xlsx形式で保存 | マクロが不要な場合のみ |
| 「いいえ」 | 「名前を付けて保存」に戻る | こちらを選び、.xlsmで保存し直す |
「いいえ」を選択して「名前を付けて保存」画面に戻り、ファイルの種類を「Excel マクロ有効ブック (*.xlsm)」に変更してから保存し直してください。
対処法2:セキュリティ設定を確認・変更する
マクロのセキュリティ設定が厳しすぎると、マクロが実行できないだけでなく、保存にも影響が出ることがあります。セキュリティ設定を確認して、適切なレベルに調整しましょう。
マクロのセキュリティレベルを確認する手順
ステップ1:Excelを開き、「ファイル」タブをクリックします。
ステップ2:左側メニューの「オプション」をクリックします。
ステップ3:「Excelのオプション」ウィンドウが開いたら、左メニューから「トラスト センター」(旧バージョンでは「セキュリティ センター」)を選択します。
ステップ4:「トラスト センターの設定」ボタンをクリックします。
ステップ5:左メニューから「マクロの設定」を選択します。
ステップ6:以下の4つのオプションから適切なものを選択します。
| 設定項目 | 動作内容 | 推奨度 |
|---|---|---|
| 警告を表示せずにすべてのマクロを無効にする | マクロが完全にブロックされる | セキュリティ最優先の環境向け |
| 警告を表示してすべてのマクロを無効にする | ファイルごとに有効化を選択可能 | 一般的に推奨 |
| デジタル署名されたマクロを除き、すべてのマクロを無効にする | 署名付きマクロのみ自動実行 | 企業環境向け |
| すべてのマクロを有効にする(推奨しません) | すべてのマクロが自動実行される | セキュリティリスクが高い |
「すべてのマクロを有効にする」を選ぶと、悪意のあるマクロも自動実行されてしまうため、通常は「警告を表示してすべてのマクロを無効にする」を推奨します。
対処法3:「信頼できる場所」を設定する
特定のフォルダに保存したExcelファイルのマクロを常に有効にしたい場合は、そのフォルダを「信頼できる場所」に登録すると便利です。毎回「コンテンツの有効化」をクリックする手間がなくなります。
信頼できる場所の追加手順
ステップ1:Excelを開き、「ファイル」→「オプション」をクリックします。
ステップ2:「トラスト センター」→「トラスト センターの設定」を開きます。
ステップ3:左メニューから「信頼できる場所」を選択します。
ステップ4:画面下部の「新しい場所の追加」ボタンをクリックします。
ステップ5:「参照」ボタンを押し、マクロ付きファイルを保存するフォルダを選択します。
ステップ6:必要に応じて「この場所のサブフォルダーも信頼する」にチェックを入れます。
ステップ7:「OK」をクリックして設定を完了します。
「C:\Users\ユーザー名\Documents\ExcelMacro」のような専用フォルダを作成し、マクロ付きファイルはすべてこのフォルダに保存する運用がおすすめです。管理しやすく、セキュリティも確保できます。
ネットワークドライブを信頼できる場所に追加する場合
会社のネットワークドライブ上のフォルダを「信頼できる場所」に追加する場合は、トラスト センターの「信頼できる場所」画面で「プライベート ネットワーク上にある信頼できる場所を許可する」にチェックを入れる必要があります。このチェックが入っていないと、ネットワーク上のフォルダは「信頼できる場所」として機能しません。
対処法4:インターネットからダウンロードしたファイルのブロックを解除する
メールの添付ファイルやWebサイトからダウンロードしたマクロ有効ブックは、Windows のセキュリティ機能「Mark of the Web(MotW)」により自動的にブロックされます。この場合、以下の方法でブロックを解除できます。
方法1:ファイルのプロパティから解除する(推奨)
ステップ1:ブロックされているExcelファイルをエクスプローラーで見つけます。
ステップ2:ファイルを右クリックし、「プロパティ」を選択します。
ステップ3:「全般」タブの下部にある「セキュリティ」欄を確認します。
ステップ4:「このファイルは他のコンピューターから取得したものです。このコンピューターを保護するため、このファイルへのアクセスはブロックされる可能性があります」というメッセージが表示されています。
ステップ5:右側の「許可する」チェックボックスにチェックを入れます。
ステップ6:「適用」→「OK」をクリックして完了です。
方法2:PowerShellで一括解除する
複数のファイルを一度に解除したい場合は、PowerShellコマンドが便利です。
Windowsの検索バーに「PowerShell」と入力し、「管理者として実行」で起動します。以下のコマンドを実行してください。
Get-ChildItem "C:\Users\ユーザー名\Downloads\*.xlsm" | Unblock-File
このコマンドは、指定フォルダ内のすべての.xlsmファイルのブロックを一括で解除します。パスは自分の環境に合わせて変更してください。
ブロック解除は、信頼できるファイルに対してのみ行ってください。不審なメールに添付されていたファイルや、見覚えのないサイトからダウンロードしたファイルのブロックを解除すると、マルウェア感染のリスクがあります。
対処法5:OneDrive・SharePointでのマクロ保存の注意点
Microsoft 365環境で OneDriveやSharePointを利用している場合、マクロ有効ブックの保存には特有の注意点があります。
自動保存をオフにする
OneDriveやSharePointに保存されたファイルは、自動保存が有効になります。自動保存は便利な機能ですが、マクロの開発中は意図しないタイミングで保存されてしまうことがあります。
ステップ1:Excelの画面左上にある「自動保存」のトグルスイッチを確認します。
ステップ2:オンになっている場合は、クリックしてオフにします。
ステップ3:マクロの編集・テストが完了したら、手動で「Ctrl + S」で保存します。
ファイルパスの問題に対処する
OneDriveやSharePoint上のファイルは、ファイルパスが「https://…」のURL形式になることがあります。VBAコード内でFileSystemObjectやDir関数を使用している場合、このURL形式のパスでは正常に動作しません。
対処法として、以下の方法があります。
| 方法 | 内容 | 難易度 |
|---|---|---|
| ローカルにコピーしてから作業する | ファイルをPC内にダウンロードしてから編集 | 簡単 |
| Environ関数でローカルパスを取得する | VBAコード内でローカルパスに変換 | やや高度 |
| OneDrive同期フォルダのパスを利用する | 同期済みフォルダのローカルパスを使用 | 中程度 |
「デスクトップアプリで開く」を使う
SharePointやOneDriveでマクロ有効ブックを開く場合は、必ず「デスクトップ アプリで開く」を選択してください。ブラウザ上のExcel Webではマクロが動作しないため、マクロの編集や保存ができません。
対処法6:Excel Web版(ブラウザ版)の制限を理解する
Excel for the Web(ブラウザ版Excel/Excel Online)には、マクロに関する大きな制限があります。
Excel Web版でできること・できないこと
| 操作 | Excel Web版 | Excelデスクトップ版 |
|---|---|---|
| マクロ(VBA)の作成 | 不可 | 可能 |
| マクロ(VBA)の実行 | 不可 | 可能 |
| マクロ(VBA)の編集 | 不可 | 可能 |
| .xlsmファイルを開く | 可能(マクロは動作しない) | 可能 |
| Office Scripts(自動化) | 可能(JavaScriptベース) | 可能 |
| データの閲覧・編集 | 可能(マクロ以外の部分) | 可能 |
Excel Web版で.xlsmファイルを編集・保存しても、マクロのコード自体は削除されません。ただし、マクロは実行できず、VBE(Visual Basic Editor)にもアクセスできません。マクロを使いたい場合は、必ず「デスクトップ アプリで開く」を選択してください。
Excel Web版でのマクロの代替手段
Excel Web版では、VBAマクロの代わりにOffice Scriptsを利用できます。Office ScriptsはJavaScript(TypeScript)ベースの自動化機能で、Excel Web版でも動作します。ただし、VBAとは文法や機能が異なるため、既存のVBAコードをそのまま移行することはできません。
対処法7:VBAプロジェクトの保護とバックアップ
大切なマクロを失わないために、VBAプロジェクトの保護とバックアップの方法を知っておきましょう。
VBAプロジェクトにパスワードを設定する
VBAプロジェクトにパスワードを設定すると、第三者による変更や削除を防ぐことができます。
ステップ1:Excelファイルを開き、「Alt + F11」でVBE(Visual Basic Editor)を起動します。
ステップ2:左側のプロジェクトエクスプローラーで、保護したいプロジェクト(VBAProject)を右クリックします。
ステップ3:「VBAProject のプロパティ」を選択します。
ステップ4:「保護」タブを開きます。
ステップ5:「プロジェクトを表示用にロックする」にチェックを入れます。
ステップ6:パスワードを設定して「OK」をクリックします。
ステップ7:ファイルを保存して閉じ、再度開くとプロジェクトがロックされています。
VBAコードをエクスポート(バックアップ)する
マクロのソースコードは、テキストファイルとしてエクスポートしておくと安心です。万が一ファイルが破損しても、コードを再度インポートして復旧できます。
ステップ1:VBE(Alt + F11)を開きます。
ステップ2:エクスポートしたいモジュールを右クリックします。
ステップ3:「ファイルのエクスポート」を選択します。
ステップ4:保存先を指定して「保存」をクリックします(.bas形式で保存されます)。
エクスポートしたファイルは、VBE上で「ファイルのインポート」を選べばいつでも復元できます。
マクロに大きな変更を加えるたびにエクスポートを行いましょう。特に、他の人と共有しているファイルや、長期間運用しているマクロは定期的なバックアップが重要です。エクスポートしたファイルはGitなどのバージョン管理システムで管理すると、さらに安全です。
対処法8:破損したVBAプロジェクトを修復する
VBAプロジェクトが破損してしまった場合は、以下の方法で修復を試みてください。
方法1:新しいブックにモジュールを移行する
ステップ1:破損したファイルと新しい空のExcelファイル(.xlsm)を両方開きます。
ステップ2:VBE(Alt + F11)を開きます。
ステップ3:破損ファイルのモジュールを1つずつ右クリックし、「ファイルのエクスポート」で書き出します。
ステップ4:新しいファイルのプロジェクトを選択し、「ファイルのインポート」で読み込みます。
ステップ5:ワークシートやデータも新しいファイルにコピーします。
方法2:「開いて修復」機能を使う
ステップ1:Excelを起動し、「ファイル」→「開く」→「参照」を選択します。
ステップ2:破損したファイルを選択します(まだ開かないでください)。
ステップ3:「開く」ボタンの右にある▼(下向き矢印)をクリックします。
ステップ4:「開いて修復する」を選択します。
ステップ5:「修復」を選択して修復を試みます。修復できない場合は「データの抽出」を選びます。
トラブル別 対処法クイックリファレンス
お困りの状況に合わせて、対処法をすぐに見つけられるように早見表をまとめました。
| 症状 | 主な原因 | 参照する対処法 |
|---|---|---|
| 保存したらマクロが消えた | ファイル形式が.xlsx | 対処法1 |
| 「マクロなしのブックに保存できません」と表示される | ファイル形式が.xlsx | 対処法1 |
| 「コンテンツの有効化」が表示されない | セキュリティ設定がブロック | 対処法2・対処法4 |
| 毎回「コンテンツの有効化」を求められる | 信頼できる場所に未登録 | 対処法3 |
| ダウンロードしたファイルのマクロが動かない | MotWによるブロック | 対処法4 |
| OneDrive上でマクロが動かない | パス形式の問題・自動保存 | 対処法5 |
| ブラウザでExcelを開いたらマクロが使えない | Web版ではVBA非対応 | 対処法6 |
| VBEが開かない・フリーズする | VBAプロジェクト破損 | 対処法8 |
よくある質問(FAQ)
まとめ
Excelでマクロ有効ブックが保存できない・マクロが消えてしまう問題は、多くの場合ファイル形式の選択ミスが原因です。マクロを含むファイルは必ず「Excel マクロ有効ブック(.xlsm)」形式で保存するようにしましょう。
この記事で解説した対処法を改めて整理すると、以下の通りです。
| 対処法 | 概要 |
|---|---|
| 対処法1 | マクロ有効ブック(.xlsm)として正しく保存する |
| 対処法2 | セキュリティ設定を確認・変更する |
| 対処法3 | 「信頼できる場所」を設定する |
| 対処法4 | ダウンロードファイルのブロックを解除する |
| 対処法5 | OneDrive・SharePointでの保存に注意する |
| 対処法6 | Excel Web版の制限を理解する |
| 対処法7 | VBAプロジェクトの保護とバックアップ |
| 対処法8 | 破損したVBAプロジェクトを修復する |
特に重要なポイントは以下の3つです。
- 保存するときは必ずファイル形式を「.xlsm」に設定する(最も多い原因の防止)
- よく使うマクロファイルのフォルダは「信頼できる場所」に登録する(毎回の有効化操作を省略)
- VBAコードは定期的にエクスポートしてバックアップを取る(万一の破損に備える)
これらの対策を日頃から意識しておくことで、「せっかく作ったマクロが消えた」というトラブルを未然に防ぐことができます。
もしこの記事の対処法をすべて試しても問題が解決しない場合は、Excelの修復インストール(「設定」→「アプリ」→「Microsoft 365」→「変更」→「オンライン修復」)を検討してみてください。
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!