Excel の .xlsm やアドイン入りブックを開いたとき、
Auto_Open
やWorkbook_Open
などの自動実行マクロが走って困ることがあります。
セキュリティやデバッグのために 「マクロを実行させずに開く」 方法を整理しました。
1. Shift キーを押しながら開く(手動で一番手軽)
ファイルをダブルクリックする直前から Shift
を押しっぱなしで開く
Auto_Open
、Workbook_Open
、アドインの自動読み込みがスキップされる
Excel の「緊急停止スイッチ」的な機能
2. Excel をセーフモードで起動する
-
Ctrl
キーを押しながら Excel を起動
(またはWin + R
→excel /safe
) -
起動した Excel の [ファイル] → [開く] メニューや、ドラッグ&ドロップで .xlsm などのファイルを開く
アドインや自動実行マクロが読み込まれない状態で起動できる
3. トラストセンターで無効化
[ファイル] → [オプション] → [トラスト センター]
[マクロの設定] → 「通知なしで全てのマクロを無効にする」を選択
ファイルを開く(マクロは強制的に停止)
4. ファイル拡張子を一時的に変更
.xlsm → .xlsx にリネームして開く
マクロモジュールは無視されるので実行されない
ただし VBA コード自体は確認できない(コード解析には不向き)
5. PowerShell / COM で自動化する場合
外部から Excel を起動する場合は、COM オブジェクトの設定でマクロ実行を無効化可能。
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $true
# マクロを強制無効化
$excel.AutomationSecurity = 3 # msoAutomationSecurityForceDisable
$excel.EnableEvents = $false # イベントも止める
$wb = $excel.Workbooks.Open("C:\path\to\file.xlsm")
# ← ここでは Auto_Open や Workbook_Open は実行されない
$wb.Close($false)
$excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
まとめ
方法 特徴
Shift 押し開き 手軽。開く瞬間だけ止められる
セーフモード アドイン含めて完全に無効化
マクロ設定変更 強制無効化できるが元に戻す手間あり
拡張子変更 マクロを無視できるがコードは確認できない
PowerShell/COM 自動化で安全に開く場合に便利
✅ 「Shift 開き」や「AutomationSecurity=3」あたりが一番実用的です。
用途に応じて使い分けると安心してファイルを開けます。