「いつものマクロ付きブックを開いたら、黄色い『コンテンツの有効化』ボタンが消えて、赤い『セキュリティ リスク』バーになっていた」——これが2026年のExcelマクロ問題の象徴だ。原因の構図は数年前から大きく変わっている。最大の転換点は、インターネット由来のファイル(MOTW = Mark of the Web 付き)のVBAマクロを、Officeが既定で問答無用にブロックするようになったこと。昔のように「有効化」を1クリックでは動かせない。本稿では2026年時点で本当に効く対処を、頻度と効果の高い順に整理する。
⚠️ 注記: Excel はバージョン・更新で UI とメニュー位置が変わる。下記は本稿執筆時点(2026年6月、Microsoft 365 / 最新ビルド)の挙動。「すべてのマクロを有効にする」は使わないこと。マルウェアの主要侵入経路であり、推奨されない。
Unblock-File.xlsx にはマクロを保存できない。**.xlsm / .xlsb** で保存する| 症状・メッセージ | 主な原因 | まず試す対処 |
|---|---|---|
| 赤帯「セキュリティ リスク… ブロックされました」 | MOTW(ネット由来ファイル) | 右クリック→プロパティ→許可する / 信頼できる場所 |
| 黄帯「セキュリティの警告」+有効化ボタン | ローカル由来でマクロ無効設定 | [コンテンツの有効化] をクリック |
| マクロが一覧に出ない・保存で消える | .xlsx で保存している |
.xlsm / .xlsb で保存し直す |
| 「コンパイル エラー」「ユーザー定義型は…」 | 参照設定の破損 | VBE → [ツール] → [参照設定] でMISSING解除 |
| 「実行時エラー '9'/'1004'」 | シート名・セル参照のズレ | コードの参照先を現状に合わせ修正 |
| 特定環境だけ落ちる | 32/64bit 非互換(Declare) |
PtrSafe 対応・LongPtr へ修正 |
| 起動から重い・突然死 | アドイン/セキュリティソフト干渉 | excel /safe で切り分け |
ネット・メール・Teams/Slack・ダウンロードフォルダ経由で来たファイルには Mark of the Web(MOTW) が付き、Office はその中のVBAマクロを既定でブロックする。表示されるのは黄色い「有効化」ボタンではなく、赤い「セキュリティ リスク」バーだ。
ファイル単位で解除する(いちばん手軽):
複数ファイルをまとめて解除する(PowerShell):
# 単一ファイル
Unblock-File -Path "C:\work\macro.xlsm"
# フォルダ内をまとめて
Get-ChildItem "C:\work\*.xlsm" | Unblock-File
ブロックされたときに実際に表示されるメッセージと解除操作は、この動画が分かりやすい(2026年現在の挙動とほぼ同じ)。
💡 ポイント: MOTW は「どこから来たか」の印。社内の信頼できる相手からのファイルでも、ネット経由なら付く。毎回解除がだるいなら、次の「信頼できる場所」が本命。
特定フォルダを信頼できる場所に登録すると、そこに置いたファイルは MOTW があってもマクロが動く。業務で固定のマクロブックを使うならこれが最適。
| 設定場所 | 効く範囲 | 向いている用途 |
|---|---|---|
| 右クリック→許可する | そのファイル1個 | 単発で受け取ったファイル |
| 信頼できる場所 | フォルダ配下すべて | 毎日使う固定マクロ |
| トラストセンターのマクロ設定 | Excel全体の既定動作 | 基本は「警告して無効化」のまま |
[ファイル] → [オプション] → [トラスト センター] → [トラスト センターの設定] → [マクロの設定]。
注: この設定は「マクロを無効化したつもりがない」のに動かない時の確認用。赤帯ブロックの主因は MOTW なので、まず対策1・2を見ること。
.xlsx ではマクロは死ぬ)意外と多い初歩のワナ。**.xlsx 形式はマクロを保存できない**。保存時に「マクロなしのブックとして保存しますか?」を素通りすると、コードごと消える。
| 拡張子 | マクロ | 用途 |
|---|---|---|
.xlsx |
❌ 保存不可 | マクロなしの通常ブック |
.xlsm |
✅ 可 | マクロ付きブックの標準 |
.xlsb |
✅ 可(バイナリ) | 大規模・高速。マクロ可 |
.xls |
✅ 可(旧形式) | 互換目的のみ。非推奨 |
.xlsx で保存して消えた場合、コードは復元できない。バックアップ/履歴から復旧を「ユーザー定義型は定義されていません」「コンパイル エラー」が出るなら、参照しているライブラリが環境間でズレている。
Alt + F11)→ [ツール] → [参照設定] を開くCreateObject 利用)に書き換えると環境差に強くなるSheets("売上") のような直書き名は壊れやすい古いマクロを64bit版 Excel で動かすと、Windows API 宣言で落ちることがある。
Declare ステートメントに PtrSafe を付け、ポインタ/ハンドルは LongPtr へ#If VBA7 Then / #If Win64 Then)で 32/64bit 両対応にするWin + R → excel /safe。これで動くなら、原因はアドインかカスタマイズ.xlsm から、新しい .xlsm にモジュールをエクスポート/インポートして再構成.xlsm/.xlsb を徹底: テンプレートの保存形式を最初から固定2026年の「Excelマクロが動かない」は、まず赤帯(MOTW ブロック)か黄帯(通常の無効化)かを見分ける——これが最大の分岐だ。赤帯なら右クリック「許可する」か信頼できる場所、黄帯なら有効化ボタン。次に .xlsm で保存できているかを確認し、そのうえで参照設定・参照先のズレ・32/64bit・アドイン干渉を順に潰す。「すべて有効化」に逃げず、信頼できる場所と署名で“安全に動かす”運用に寄せるのが、結局いちばん速くて安全だ。