会社で使っていた Excel ファイルのマクロが突然動かなくなった、前任者が作った VBA マクロがエラーで止まる——こういう持ち込み相談、PC ショップ時代の常連でした。「壊れた」と来るんですが、たいていはセキュリティ設定かファイル形式のどちらかなんですよね。

Excel マクロ(VBA)は業務効率化の強力なツールですが、「作った人しかわからない」状態になりがちで、担当者が異動・退職した途端に誰も直せなくなるケースが後を絶ちません。以下、2026年3月時点の Microsoft 365 / Excel 2021(自分の検証機)を前提に、マクロが動かない原因 6 つと、VBA に詳しくなくてもできる対処法を順番に潰していきます。

原因1:セキュリティ設定でマクロがブロックされている

いちばん多い原因。Microsoft 365 では 2022 年のアップデート以降、インターネットからダウンロードしたファイルのマクロはデフォルトで完全にブロック されるようになりました。

メールで受け取ったファイルや、社内サーバーからコピーしたファイルも「インターネットからのファイル」と判定されることがあったりする。ファイルを開いたとき、黄色いバーではなく 赤いバーで「セキュリティリスク:マクロの実行がブロックされました」 と表示される場合、これが犯人です。

対処法

方法A:ファイルのブロックを個別に解除する

  1. 該当の Excel ファイルを右クリック →「プロパティ」
  2. 「全般」タブの一番下「セキュリティ:このファイルは他のコンピューターから取得したものです」横の 「許可する」にチェック
  3. 「OK」→ ファイルを開き直す

方法B:信頼できる場所に保存する

  1. Excel を開き、「ファイル」→「オプション」→「トラストセンター」→「トラストセンターの設定」
  2. 左メニューの「信頼できる場所」
  3. 「新しい場所の追加」でマクロファイルを保存するフォルダを登録
  4. そのフォルダにファイルを移動してから開く

「このファイル(またはフォルダ)は安全だよ」と Excel に教えてあげる作業です。社内の業務マクロが多い人は、方法 B でフォルダ単位で許可するほうが楽だと思います。

原因2:ファイル形式が「.xlsx」になっている

見落としやすいのが ファイルの拡張子。Excel のマクロは マクロ有効ブック(.xlsm) でしか動きません。

「名前を付けて保存」のときに「Excel ブック(.xlsx)」で保存すると、マクロのコードは残ったまま実行だけできない 状態になります。前任者のファイルをコピーしたときにも起きがちで、自分も新人のころこれで2時間溶かしました。

対処法

  1. 「ファイル」→「名前を付けて保存」
  2. ファイルの種類を 「Excel マクロ有効ブック (*.xlsm)」 に変更して保存
  3. 保存し直したファイルを開いてマクロを実行

マクロ付きのファイルを .xlsx 形式で保存しようとすると、Excel 側で「VB プロジェクトが含まれています」という警告が出ます。この警告を無視して保存すると次回からマクロが動かなくなるので、必ず .xlsm を選んでください。

原因3:VBA の「参照設定」が壊れている

少し中級者向けですが、これも頻発します。VBA マクロは外部のライブラリ(部品集のようなもの)を「参照設定」で読み込んで使うことがあります。

PC を買い替えたり、Office のバージョンが変わったりすると、参照先のライブラリが見つからず「MISSING」状態 になります。「コンパイルエラー:プロジェクトまたはライブラリが見つかりません」が出たらこれ。

対処法

  1. Excel でファイルを開き、Alt + F11 で VBA エディター(VBE)を開く
  2. メニューの「ツール」→「参照設定」
  3. 一覧に 「参照不可: 〇〇」(MISSING) と表示されている項目があれば、チェックを外す
  4. 必要な場合は、正しいバージョンのライブラリにチェックを入れ直す
  5. 「OK」をクリックしてマクロを再実行

よくあるのは「Microsoft ActiveX Data Objects 2.8 Library」が「6.1 Library」に変わっているバージョン違い。古い方のチェックを外して新しい方にチェックを入れれば解決します。

原因4:シート名・セル範囲が変わっている

VBA マクロの中では、シート名やセルの範囲を直接指定している ことが多いです。たとえば:

Sheets("売上データ").Range("A1:D100").Copy

「売上データ」というシートの名前を誰かが「売上データ_2026」に変えたり、シートを削除したりすると、「実行時エラー '9': インデックスが有効範囲にありません」 で止まります。

対処法

  1. Alt + F11 で VBA エディターを開く
  2. エラーが発生するマクロのコードを表示
  3. Sheets("〇〇")Range("A1:D100") のように書かれている部分を確認
  4. 実際のシート名・セル範囲と一致しているかチェック
  5. 一致していなければ、コード内の文字列を修正して保存

結局のところ、「マクロの中で書かれている名前」と「実際のシートやセルの名前」がズレていないかを確認する作業です。VBA がわからなくても、ダブルクォーテーション("")で囲まれた文字を探すだけ なので、やってみる価値はあります。

原因5:32bit / 64bit の互換性エラー

会社で PC を入れ替えたとき、以前の Excel が 32bit 版、新しい PC の Excel が 64bit 版 になっているケース。2026 年現在、Microsoft 365 の新規インストールはデフォルトで 64bit 版です。

32bit 版の Excel で作った VBA マクロに Declare 文(外部の Windows API を呼び出すコード) が含まれていると、64bit 版では「コンパイルエラー:コードはこのプラットフォーム上で使用するために更新する必要があります」が出ます。

対処法

VBA コードの先頭付近に Declare FunctionDeclare 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 ブロック変数が設定されていません」と表示されるケース。

マクロが想定しているデータの形式と、実際のデータが合っていない 場合に起きます。たとえば、数値が入るはずのセルに文字列が入っていたり、空白セルがあったりする状況です。

対処法

  1. エラー時に「デバッグ」ボタンをクリック
  2. VBA エディターが開き、黄色くハイライトされた行 がエラー発生箇所
  3. その行がどのセルやシートを参照しているかを確認
  4. 対象のセルに 想定外のデータ(空白・文字列・エラー値) が入っていないかチェック
  5. データを修正してマクロを再実行

よくあるパターンは、新しい月のデータを入力するときに フォーマットが前月と微妙に変わっている ケース。列の追加・削除、セルの結合なども原因になります(自分の経験では、これがマクロエラー原因の体感で 3 割くらい)。

マクロトラブルを予防する 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 なら基本的にマクロ付きです。

マクロのセキュリティ設定を「すべてのマクロを有効にする」にしても大丈夫?

推奨されません。悪意のあるマクロが自動実行されるリスクがあります。「信頼できる場所」に業務用フォルダを登録する方法のほうが安全です。

参考文献