【ExcelVBA】ブックを開いた時に自動実行(Workbook_Open)

仕事効率化
スポンサーリンク

  • VBAでブックを開いた時にマクロを自動実行するにはどうすればいいの?
  • ブックを開いた時に決まったシートを表示したい
  • ブックを開いた時に入力データを削除したい
と思ったこともあるのではないでしょうか。

そこで今回は、VBAでブックを開いた時にマクロを自動実行する方法について紹介します。

ブックを開いた時のデータ削除処理や、任意のシートを表示させる方法も紹介します。ブックを開いた時の自動実行を使いこなせると、非常に使いやすいマクロを作ることができるので、ぜひ覚えておきましょう。

スポンサーリンク

ブックを開いた時に自動実行するサンプルコード

'必ず「ThisWorkbook」モジュールに書く
Sub Workbook_Open()

    'ブックが開いた時にメッセージ表示
    MsgBox "自動実行されました。"

End Sub
01_VBAWorkbook_Open実行イメージ

ブックを開いた時に自動実行するコード解説

'必ず「ThisWorkbook」モジュールに書く
Sub Workbook_Open()

    'ブックが開いた時にメッセージ表示
    MsgBox "自動実行されました。"

End Sub
サンプルのように、ブックを開いた時にマクロを自動実行したい場合は、下記2つのルールを必ず守りましょう。
  • 「ThisWorkbook」モジュール内に書く
  • プロシージャ名は「Workbook_Open」とする
02_VBAWorkbook_OpenThisWorkbookモジュールに書く
上記のように「ThisWorkbook」モジュール内の「Workbook_Open」プロシージャが、ブックを開いた時に自動実行されます。

サンプルでは、MsgBoxを表示するだけの簡単な処理を実行して終了しています。ここに書いた任意の処理が、ブックを開いた時に自動実行されます。

Workbook_OpenとAuto_Openの違い

「Workbook_Open」に似ている処理で「Auto_Open」という処理があります。

それぞれの違いをまとめます。
  • どのモジュールに書くか
    • Workbook_Open:「ThisWorkbook」モジュール
    • Auto_Open:「標準」モジュール
  • 「Workbooks.Open」で開かれたブックでの挙動
    • Workbook_Open:実行される
    • Auto_Open:実行されない
  • どちらも記述されている場合
    • Workbook_Open:先に実行される
    • Auto_Open:「Workbook_Open」実行後に実行される
似ている処理ですが、上記の違いがあるので、しっかり理解しておきましょう。

Workbook_Openの使用例

起動時に表示するシートを指定する

ブックを開いた時に、任意のシートを表示させたいといった場合にも「Workbook_Open」を使うといいでしょう。

具体的には、ブックを開いたと同時に表示させたいシートを「Active」にすればいいので、「ThisWorkbook」モジュールの「Workbook_Open」に次のように書きましょう。
'「ThisWorkbook」モジュール内
Sub Workbook_Open()

    'ブックが開いた時に任意のシート(「サンプル」シート)を表示
    Dim trgtSh As Worksheet
    Set trgtSh = ThisWorkbook.Worksheets("サンプル")
    trgtSh.Activate

End Sub
03_VBAWorkbook_Open任意のシート表示イメージ

起動と同時に入力データを削除する

ブックを開いた時に、入力されているデータを削除したいといった場合にも「Workbook_Open」が有効です。

例えば「サンプル」シート「A1:A10」を起動のたびにクリアしておきたい場合は、自動実行で任意のセル範囲の値を「””」(空文字)とすればいいので、「ThisWorkbook」モジュールの「Workbook_Open」に次のように書きましょう。
'「ThisWorkbook」モジュール内
Sub Workbook_Open()

    'ブックが開いた時に任意のセル範囲の値を削除
    Dim delRng As Range
    Set delRng = ThisWorkbook.Worksheets("サンプル").Range("A1:A10")

    delRng.Value = ""

End Sub
04_VBAWorkbook_Open任意のセル範囲クリアイメージ

ブックを開いた時に自動実行するまとめ

今回はVBAでブックを開いた時に自動実行する「Workbook_Open」イベントについて紹介しました。
「Workbook_Open」イベントの使用例
  • 起動時に表示するシートを指定する
  • 起動と同時に入力データを削除する
また、あわせて紹介した「Auto_Open」との違いなども覚えておきましょう。

ブックを開いた時の自動実行を利用すれば、マクロ使用者への作業負担を軽減することもできますし、誤った操作を抑制することもできます。

うまく使うことができれば、マクロの幅が一気に広がりますので、ぜひ使いこなしてみてください。