会社で使っていたExcelファイルのマクロが突然動かなくなった、前任者が作ったVBAマクロがエラーで止まる——そんな経験はありませんか?
Excelマクロ(VBA)は業務効率化の強力なツールですが、「作った人しかわからない」状態になりがち。担当者が異動・退職した途端、誰も直せなくなるケースが後を絶ちません。
この記事では、2026年3月時点のMicrosoft 365 / Excel 2021環境を前提に、マクロが動かない・エラーで止まるよくある原因6つと、VBAに詳しくなくてもできる対処法をわかりやすく解説します。
原因1:セキュリティ設定でマクロがブロックされている
いちばん多い原因がこれです。Microsoft 365では、2022年のアップデート以降、インターネットからダウンロードしたファイルのマクロはデフォルトで完全にブロックされるようになりました。
メールで受け取ったファイルや、社内サーバーからコピーしたファイルも「インターネットからのファイル」と判定されることがあります。ファイルを開いたとき、黄色いバーではなく赤いバーで「セキュリティリスク:マクロの実行がブロックされました」と表示される場合、この設定が原因です。
対処法
方法A:ファイルのブロックを個別に解除する
- 該当のExcelファイルを右クリック → 「プロパティ」を開く
- 「全般」タブの一番下にある「セキュリティ:このファイルは他のコンピューターから取得したものです」の横にある「許可する」にチェックを入れる
- 「OK」をクリックして、ファイルを開き直す
方法B:信頼できる場所に保存する
- Excelを開き、「ファイル」→「オプション」→「トラストセンター」→「トラストセンターの設定」をクリック
- 左メニューの「信頼できる場所」を選択
- 「新しい場所の追加」でマクロファイルを保存するフォルダを登録する
- そのフォルダにファイルを移動してから開く
ざっくり言うと、「このファイル(またはフォルダ)は安全だよ」とExcelに教えてあげる作業です。
原因2:ファイル形式が「.xlsx」になっている
意外と見落としがちなのがファイルの拡張子です。Excelのマクロは、マクロ有効ブック(.xlsm)でしか動きません。
ファイルを「名前を付けて保存」するときに、うっかり「Excelブック(.xlsx)」で保存すると、マクロのコードは残ったまま実行だけできない状態になります。これは前任者のファイルをコピーしたときにも起きがちです。
対処法
- 「ファイル」→「名前を付けて保存」を選択
- ファイルの種類を「Excel マクロ有効ブック (*.xlsm)」に変更して保存
- 保存し直したファイルを開いてマクロを実行する
なお、マクロ付きのファイルを.xlsx形式で保存しようとすると、Excel側で「VBプロジェクトが含まれています」という警告が出ます。この警告を無視して保存すると、次回からマクロが動かなくなります。
原因3:VBAの「参照設定」が壊れている
これは少し中級者向けの原因ですが、かなり多いトラブルです。VBAマクロは外部のライブラリ(部品集のようなもの)を「参照設定」で読み込んで使うことがあります。
パソコンを買い替えたり、Officeのバージョンが変わったりすると、参照先のライブラリが見つからず「MISSING」状態になることがあります。この状態でマクロを実行すると、「コンパイルエラー:プロジェクトまたはライブラリが見つかりません」というエラーが出ます。
対処法
- Excelでファイルを開き、Alt + F11 でVBAエディター(VBE)を開く
- メニューの「ツール」→「参照設定」をクリック
- 一覧に「参照不可: 〇〇」(MISSING)と表示されている項目があれば、チェックを外す
- 必要な場合は、正しいバージョンのライブラリにチェックを入れ直す
- 「OK」をクリックしてマクロを再実行する
よくあるケースは、「Microsoft ActiveX Data Objects 2.8 Library」が「6.1 Library」に変わっている、といったバージョン違いです。古い方のチェックを外して新しい方にチェックを入れれば解決します。
原因4:シート名・セル範囲が変わっている
VBAマクロの中では、シート名やセルの範囲を直接指定していることが多いです。たとえば、こんなコードがよくあります。
Sheets("売上データ").Range("A1:D100").Copy
この場合、「売上データ」というシートの名前を誰かが「売上データ_2026」に変えたり、シートを削除したりすると、「実行時エラー '9': インデックスが有効範囲にありません」というエラーで止まります。
対処法
- Alt + F11 でVBAエディターを開く
- エラーが発生するマクロのコードを表示する
- Sheets("〇〇") や Range("A1:D100") のように書かれている部分を確認する
- 実際のシート名・セル範囲と一致しているかチェックする
- 一致していなければ、コード内の文字列を修正して保存する
つまり、「マクロの中で書かれている名前」と「実際のシートやセルの名前」がズレていないかを確認する作業です。VBAがわからなくても、ダブルクォーテーション("")で囲まれた文字を探すだけなので、やってみる価値はあります。
原因5:32bit/64bitの互換性エラー
会社でパソコンを入れ替えたとき、以前のExcelが32bit版で、新しいパソコンのExcelが64bit版になっているケースがあります。2026年現在、Microsoft 365の新規インストールはデフォルトで64bit版です。
32bit版のExcelで作ったVBAマクロに Declare文(外部のWindows APIを呼び出すコード) が含まれていると、64bit版では「コンパイルエラー:コードはこのプラットフォーム上で使用するために更新する必要があります」というエラーが出ます。
対処法
VBAコードの先頭付近に Declare Function や Declare Sub と書かれている部分があれば、以下のように修正します。
修正前(32bitのみ対応):
Declare Function GetTickCount Lib "kernel32" () As Long
修正後(32bit・64bit両対応):
#If VBA7 Then
Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long
#Else
Declare Function GetTickCount Lib "kernel32" () As Long
#End If
ざっくり言うと、「PtrSafe」というキーワードを追加するのがポイントです。自分で直すのが難しい場合は、情報システム部門や外部のVBA対応業者に相談するのがおすすめです。
原因6:マクロの実行時エラー(型の不一致・オブジェクトなし)
マクロを実行すると途中で止まり、「実行時エラー '13': 型が一致しません」や「実行時エラー '91': オブジェクト変数または With ブロック変数が設定されていません」と表示されるケースです。
これは、マクロが想定しているデータの形式と、実際のデータが合っていない場合に起きます。たとえば、数値が入るはずのセルに文字列が入っていたり、空白セルがあったりするケースです。
対処法
- エラーが表示されたら「デバッグ」ボタンをクリックする
- VBAエディターが開き、黄色くハイライトされた行がエラーの発生箇所
- その行がどのセルやシートを参照しているかを確認する
- 対象のセルに想定外のデータ(空白・文字列・エラー値)が入っていないかチェック
- データを修正してからマクロを再実行する
よくあるパターンは、新しい月のデータを入力するときにフォーマットが前月と微妙に変わっているケースです。列の追加・削除、セルの結合なども原因になります。
マクロトラブルを予防する3つのコツ
マクロが動かなくなるたびに慌てないために、日頃からできる予防策を紹介します。
1. マクロ付きファイルは必ず .xlsm で保存するルールを徹底する
部署内で「マクロ付きファイルは必ず .xlsm 形式で保存する」というルールを決めましょう。SharePointやOneDriveの共有フォルダに保存する場合も同様です。
2. 信頼できる場所を共有フォルダで統一する
マクロファイルの保存先を1つのフォルダに集約し、全員のExcelで「信頼できる場所」に登録しておくと、セキュリティブロックのトラブルが激減します。情報システム部門にグループポリシーで一括設定してもらうのがベストです。
3. マクロの仕様書(簡易メモでOK)を残す
「このマクロは何をするものか」「どのシート・セル範囲を使うか」「どんなデータ形式を想定しているか」を簡単なテキストファイルやExcelの別シートにメモしておくだけで、担当者が変わったときのトラブルが大幅に減ります。
FAQ
VBAがまったくわからないのですが、マクロのエラーは自分で直せますか?
原因1(セキュリティブロック)と原因2(ファイル形式)はVBAの知識なしで対処できます。原因4(シート名のズレ)もコード内の文字列を探すだけなので初心者でも可能です。それ以外は情報システム部門や詳しい同僚に相談するのがおすすめです。
「マクロを有効にしますか?」の黄色いバーが表示されません。どうすればいいですか?
Microsoft 365の2022年以降のアップデートで、インターネットからダウンロードしたファイルは黄色いバーではなく赤いバー(完全ブロック)に変わりました。ファイルのプロパティから「許可する」にチェックを入れるか、信頼できる場所に保存してください。
マクロが入っているかどうかを確認する方法はありますか?
Alt + F11 でVBAエディターを開き、左側のプロジェクトエクスプローラーに「標準モジュール」「ThisWorkbook」「Sheet」などのフォルダがあり、中にコードが書かれていればマクロが含まれています。拡張子が .xlsm なら基本的にマクロ付きです。
マクロのセキュリティ設定を「すべてのマクロを有効にする」にしても大丈夫ですか?
推奨されません。悪意のあるマクロが自動実行されるリスクがあります。「信頼できる場所」に業務用フォルダを登録する方法のほうが安全です。






