はじめに

Excelブックには「Workbook_Open」イベントという仕組みがあり、ブックを開いたときに自動的にVBAコードを実行できます。 たとえば、起動時に初期設定を行うマクロや、メッセージを表示するマクロなどです。

しかし、次のようなケースでは「Workbook_Openを動かさずにブックを開きたい」ことがあります。

  • マクロの動作確認をしたい(起動マクロを一時的にスキップしたい)
  • セキュリティの都合で自動処理を止めたい
  • 他のVBAコードから開くときに、自動処理を抑制したい

この記事では、Workbook_Openを実行せずにブックを開く方法を紹介します。

方法1:Shiftキーを押しながら手動で開く

最も簡単なのは、「Shiftキーを押しながらブックを開く」方法です。

これはExcel標準の機能で、
「Shiftキーを押したまま開くと、Workbook_OpenやAuto_Openなどの自動マクロを実行しない」
という仕様になっています。

手順

  1. Shiftキーを押しながら、開きたいブックのアイコンをダブルクリックします。ブックが完全に開くまでShiftキーは離さないでください。
  2. マクロが実行されない状態でブックが開きます。

この方法は手動操作限定ですが、安全かつ簡単です。

方法2:VBAでイベントを一時的に無効化して開く

VBAから別のブックを開く場合は、Application.EnableEvents プロパティを使うと Workbook_Open イベントを実行させずに開くことができます。

サンプルコード

ポイント

  • Application.EnableEvents = False全イベントを無効化 します。これにより Workbook_OpenSheet_Change なども実行されません。
  • 開いたあと、忘れずに True に戻すことをおすすめします。戻し忘れると、以降のイベントも動かなくなります。

方法3:リンク更新や警告を抑制したい場合

イベントを止めるのに加えて、リンク更新や警告も無効化したい場合は、以下のようにします。

これで、

  • Workbook_Openは実行されない
  • リンク更新の確認ダイアログも出ない
  • 上書き確認などの警告も出ない

という静かな状態でブックを開けます。

まとめ

方法 特徴
Shiftキーを押して開く 手動で簡単に止められる
Application.EnableEvents = False VBAから制御できる。確実で汎用的
DisplayAlerts等を併用 警告やリンク更新も抑制可能

Workbook_Openを止める目的が「一時的にスキップ」なのか「自動化処理の中で抑制」なのかによって、使い分けましょう。

参考:Workbook_Openイベントの定義場所

最後に、Workbook_Openイベントがどこにあるか分からない場合は、「VBE(Visual Basic Editor)」で以下を確認してください。

  1. Alt + F11 を押してVBEを開く
  2. プロジェクト内の「ThisWorkbook」をダブルクリック
  3. コードウィンドウ上部で「Workbook」「Open」を選択

そこに書かれているコードが、自動実行されるマクロです。
今回紹介した方法を使えば、これを一時的に無効化できます。