- VBAでブックを開いた時にマクロを自動実行するにはどうすればいいの?
- ブックを開いた時に決まったシートを表示したい
- ブックを開いた時に入力データを削除したい
そこで今回は、VBAでブックを開いた時にマクロを自動実行する方法について紹介します。
ブックを開いた時のデータ削除処理や、任意のシートを表示させる方法も紹介します。ブックを開いた時の自動実行を使いこなせると、非常に使いやすいマクロを作ることができるので、ぜひ覚えておきましょう。
ブックを開いた時に自動実行するサンプルコード
'必ず「ThisWorkbook」モジュールに書く
Sub Workbook_Open()
'ブックが開いた時にメッセージ表示
MsgBox "自動実行されました。"
End Sub
ブックを開いた時に自動実行するコード解説
'必ず「ThisWorkbook」モジュールに書く
Sub Workbook_Open()
'ブックが開いた時にメッセージ表示
MsgBox "自動実行されました。"
End Sub
サンプルのように、ブックを開いた時にマクロを自動実行したい場合は、下記2つのルールを必ず守りましょう。- 「ThisWorkbook」モジュール内に書く
- プロシージャ名は「Workbook_Open」とする
上記のように「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
起動と同時に入力データを削除する
ブックを開いた時に、入力されているデータを削除したいといった場合にも「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
ブックを開いた時に自動実行するまとめ
今回はVBAでブックを開いた時に自動実行する「Workbook_Open」イベントについて紹介しました。「Workbook_Open」イベントの使用例
また、あわせて紹介した「Auto_Open」との違いなども覚えておきましょう。- 起動時に表示するシートを指定する
- 起動と同時に入力データを削除する
ブックを開いた時の自動実行を利用すれば、マクロ使用者への作業負担を軽減することもできますし、誤った操作を抑制することもできます。
うまく使うことができれば、マクロの幅が一気に広がりますので、ぜひ使いこなしてみてください。