← コード一覧へ戻る
実務イベント

自動実行マクロを起動しないで開く

プログラムで開く間だけVBAマクロを無効化し、終了時に元の設定を戻します。

実行前に確認

  • Excel 4.0マクロはこの設定だけでは無効化されず確認が出る場合があります。保護ビュー等の安全機能を解除するコードではありません。

1サンプルコード

Sub Sample3054()
    Dim p As Variant, oldSecurity As MsoAutomationSecurity
    p = Application.GetOpenFilename("Excel Files,*.xlsm;*.xlsx;*.xlsb")
    If VarType(p) = vbBoolean Then Exit Sub
    oldSecurity = Application.AutomationSecurity
    On Error GoTo Failed
    Application.AutomationSecurity = msoAutomationSecurityForceDisable
    Workbooks.Open Filename:=CStr(p), UpdateLinks:=0, ReadOnly:=True
    Application.AutomationSecurity = oldSecurity
    Exit Sub
    Failed:
    Application.AutomationSecurity = oldSecurity
    MsgBox "開けませんでした: " & Err.Description
End Sub

図で見る操作の流れ

イメージ図

概念図:開く間だけ設定を変え、前の設定へ戻します。

  1. 手動:選択

    xlsm・xlsx・xlsbから開くファイルを選ぶ

  2. マクロ:一時変更

    元のAutomationSecurityを覚え、VBAマクロを強制無効化

  3. マクロ:開く

    リンク更新なし・読み取り専用で開く

  4. マクロ:復元

    成功時もエラー時も、元のAutomationSecurityへ戻す

キャンセルなら終了。Excel 4.0マクロや保護ビュー等には別の制約・確認があります。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する3つの手順で、コードの使い方を確認できます
  1. 1

    練習用のブックをExcelマクロ有効ブック(.xlsm)で保存します。別の練習ファイルを用意します。

  2. 2

    Alt+F11でVBEを開き、[挿入]→[標準モジュール]にコードを貼り付けます。

  3. 3

    Sample3054内にカーソルを置いてF5で実行します。プログラムで開く間だけVBAマクロを無効化し、終了時に元の設定を戻します。

使っている機能の公式ドキュメント(Microsoft Learn)