No.002
ブックを開くとき、閉じるときにマクロを自動実行したい 《イベント プロシージャ》
2003/2007/2010/2013
ブックを開くときに処理を自動動作させたいときです。
通常マクロを作成したりVBAを記述するときは、「標準モジュール」を使用しますが、何らかのタイミングで自動的に動作させる場合は「イベント プロシージャ」を作成します。
イベント プロシージャは、Visual Basic Editor(以下VBE)のオブジェクト モジュールに記述します。
また、ブックを開くとき、閉じるときの自動実行のみ、標準モジュールに記述することができます。
今回は、ブックを開くときと閉じるときの自動実行をさせる記述を2通りでご案内します。
<ブックのオブジェクト モジュール>
VBEを開き、左上プロジェクト エクスプローラの[ThisWorkbook]をダブルクリックします。
表示されたブックのオブジェクト モジュール、タイトル バーに「ThisWorkbook」の表示があるのを確認しましょう。
次に、モジュール左上の[オブジェクト]ボックスで[Workbook]を選択すると、右の[プロシージャ]ボックスでは[Open]が自動的に指定され、プロシージャ名などが入るのを確認します。
表示された[Private Sub Workbook_Open()]のプロシージャに、自動実行するためのVBAを記述します。このとき、プロシージャ名は変更しないようにします。
上図は、「ブックを開くときSheet2がアクティブになる」動作です。
Private Sub Workbook_Open()
起動時に自動実行する記述
End Sub
閉じるときの場合は、右の[プロシージャ]ボックスで[BeforeClose]を選択し、表示された[Private Sub Workbook_BeforeClose(Cancel As Boolean)]のプロシージャに、自動実行するためのVBAを記述します。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
終了時に自動実行する記述
End Sub
BeforeCloseのイベント プロシージャを挿入すると、先に入っているOpenの記述は残っています。そのままでも問題はないですが、必要がなければ削除しておくようにしましょう。
自動実行する処理は、いつものようにVBAを記述してください。
<標準モジュール>
起動時、終了時のイベント プロシージャのみ、標準モジュールでも作成することができます。
では早速、VBEで標準モジュールを追加します。
起動時の場合、プロシージャ名を「Sub Auto_Open()」としてプロシージャを作成します。
Sub Auto_Open()
起動時に自動実行する記述
End Sub
終了時の場合、プロシージャ名を「Sub Auto_Close()」です。
Sub Auto_Close()
終了時に自動実行する記述
End Sub
ともにプロシージャ名は変更しないようにします。
上図は、「ブックを閉じるときこのブックを上書き保存する」動作です。