そのブックを開いた時に自動実行

ワークブックを開いた時に即座に自動実行させる方法です。

次の2つの方法があります。

モジュール プロシージャ 機能説明
ThisWorkbook Workbook_Open ワークブックを開くイベント
標準モジュール Auto_Open 起動時自動実行
Application.EnableEvents=False状態でも実行される。
※どちらも引数、戻り値がないプロシージャです。
Workbook_Open」「Auto_Open」の両方が実装されている場合は「Workbook_Open」が先に実行されます。

戻る 先頭に戻る

イベント動作

ワークブックやシート上のイベントを利用してマクロを起動させます。

一般的なマクロは、ユーザーが「起動させる」との意図で動かしますが、イベント処理では次のようなオペレーション動作をWindowsが察知してExcelに通知してきます。このプロシージャ名と記述する場所はあらかじめ決められています。
代表的なものは以下の通りです。

モジュール プロシージャ 機能説明
ThisWorkbook Workbook_BeforeClose ワークブックを閉じる前イベント(キャンセル可)
Workbook_BeforeSave ワークブックの保存前イベント(キャンセル可)
Workbook_BeforePrint ワークブックの印刷前イベント(キャンセル可)
Workbook_Open ワークブックを開くイベント
Workbook_SheetActivate シートを切り替えるイベント(⇒アクティブ)
Workbook_SheetDeactivate シートを切り替えるイベント(⇒非アクティブ)
Workbook_WindowActivate ウィンドウを切り替えるイベント(⇒アクティブ)
Workbook_WindowDeactivate ウィンドウを切り替えるイベント(⇒非アクティブ)
ワークシート Worksheet_Activate ワークシートがアクティブになるイベント
Worksheet_BeforeDoubleClick セルのダブルクリック前イベント(キャンセル可)
Worksheet_BeforeRightClick セルの右クリック前イベント(キャンセル可)
Worksheet_Calculate ワークシートの再計算イベント
Worksheet_Change セル値変更イベント
Worksheet_Deactivate ワークシートが非アクティブになるイベント
Worksheet_SelectionChange 選択セル変更イベント
※シートを開いた時に選択されているセルについては発生しない
ここでイベント処理の記述があると、その動作を行ないます。
サンプルでは、どのイベントがどのタイミングで発生するかが判るようにイミディエイトウィンドウにメッセージを表示させています。

イミディエイトウィンドウ
(この画像をクリックすると、ダウンロードができます。)



以下が「Module1」のソースコードです。

'***************************************************************************************************
'   Workbookイベントプロシージャサンプル                            Module1(Module)
'
'   作成者:井上治  URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev  変更履歴内容------------------------------------------------------------------------>
'03/07/07(1.00)新規作成
'16/11/19(1.10)*.xlsm化の変更
'20/02/16(1.20)コード整理、標準化準拠作業
'***************************************************************************************************
Option Explicit
'===================================================================================================
Private Const g_cnsModuleName As String = "(Module1)"

'***************************************************************************************************
'   ■■■ 自動実行 ■■■
'***************************************************************************************************
'* 処理名 :Auto_Open
'* 機能  :ブック起動時自動実行
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Auto_Open()
    '-----------------------------------------------------------------------------------------------
    Debug.Print "Auto_Openマクロが起動されました。" & g_cnsModuleName
End Sub

'----------------------------------------<< End of Source >>----------------------------------------



以下が「Sheet1」のソースコードです。

'***************************************************************************************************
'   Workbookイベントプロシージャサンプル                            Sheet1(Class)
'
'   作成者:井上治  URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev  変更履歴内容------------------------------------------------------------------------>
'03/07/07(1.00)新規作成
'16/11/19(1.10)*.xlsm化の変更
'20/02/16(1.20)コード整理、標準化準拠作業
'***************************************************************************************************
Option Explicit
'===================================================================================================
Private Const g_cnsModuleName As String = "(Sheet1)"

'***************************************************************************************************
'   ■■■ ワークシートイベント ■■■
'***************************************************************************************************
'* 処理名 :Worksheet_Activate
'* 機能  :ワークシートがアクティブになるイベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Worksheet_Activate()
    '-----------------------------------------------------------------------------------------------
    Debug.Print "Worksheet_Activateイベントが発生しました。" & g_cnsModuleName
End Sub

'***************************************************************************************************
'* 処理名 :Worksheet_BeforeDoubleClick
'* 機能  :セルのダブルクリック前イベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :Arg1 = 対象セル範囲(Range)
'*      Arg2 = Cancel(Boolean)                     ※Ref参照
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    '-----------------------------------------------------------------------------------------------
    Debug.Print "Worksheet_BeforeDoubleClickイベントが発生しました。:" & Target.Address & _
                " " & g_cnsModuleName
End Sub

'***************************************************************************************************
'* 処理名 :Worksheet_BeforeRightClick
'* 機能  :セルの右クリック前イベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :Arg1 = 対象セル範囲(Range)
'*      Arg2 = Cancel(Boolean)                     ※Ref参照
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    '-----------------------------------------------------------------------------------------------
    Debug.Print "Worksheet_BeforeRightClickイベントが発生しました。:" & Target.Address & _
                " " & g_cnsModuleName
End Sub

'***************************************************************************************************
'* 処理名 :Worksheet_Calculate
'* 機能  :ワークシート再計算イベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Worksheet_Calculate()
    '-----------------------------------------------------------------------------------------------
    Debug.Print "Worksheet_Calculateイベントが発生しました。" & g_cnsModuleName
End Sub

'***************************************************************************************************
'* 処理名 :Worksheet_Change
'* 機能  :シート上のセルの内容が変わるイベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :Arg1 = 対象セル範囲(Range)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Worksheet_Change(ByVal Target As Range)
    '-----------------------------------------------------------------------------------------------
    Debug.Print "Worksheet_Changeイベントが発生しました。:" & Target.Address & " " & g_cnsModuleName
End Sub

'***************************************************************************************************
'* 処理名 :Worksheet_Deactivate
'* 機能  :ワークシートが非アクティブになるイベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Worksheet_Deactivate()
    '-----------------------------------------------------------------------------------------------
    Debug.Print "Worksheet_Deactivateイベントが発生しました。" & g_cnsModuleName
End Sub

'***************************************************************************************************
'* 処理名 :Worksheet_SelectionChange
'* 機能  :シート上の選択セルが変わるイベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :Arg1 = 対象セル範囲(Range)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    '-----------------------------------------------------------------------------------------------
    Debug.Print "Worksheet_SelectionChangeイベントが発生しました。:" & Target.Address & _
                " " & g_cnsModuleName
End Sub

'----------------------------------------<< End of Source >>----------------------------------------



以下が「ThisWorkbook」のソースコードです。

'***************************************************************************************************
'   Workbookイベントプロシージャサンプル                            ThisWorkbook(Class)
'
'   作成者:井上治  URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev  変更履歴内容------------------------------------------------------------------------>
'03/07/07(1.00)新規作成
'16/11/19(1.10)*.xlsm化の変更
'20/02/16(1.20)コード整理、標準化準拠作業
'***************************************************************************************************
Option Explicit
'===================================================================================================
Private Const g_cnsModuleName As String = "(ThisWorkbook)"

'***************************************************************************************************
'   ■■■ ワークブックイベント ■■■
'***************************************************************************************************
'* 処理名 :Workbook_BeforeClose
'* 機能  :ワークブックを閉じる前イベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :Arg1 = Cancel(Boolean)                     ※Ref参照
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    '-----------------------------------------------------------------------------------------------
    Debug.Print "Workbook_BeforeCloseイベントが発生しました。" & g_cnsModuleName
End Sub

'***************************************************************************************************
'* 処理名 :Workbook_BeforePrint
'* 機能  :ワークブックの印刷前イベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :Arg1 = Cancel(Boolean)                     ※Ref参照
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    '-----------------------------------------------------------------------------------------------
    Debug.Print "Workbook_BeforePrintイベントが発生しました。" & g_cnsModuleName
End Sub

'***************************************************************************************************
'* 処理名 :Workbook_BeforeSave
'* 機能  :ワークブックを保存する前のイベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :Arg1 = SaveAsUI(Boolean)
'*      Arg2 = Cancel(Boolean)                     ※Ref参照
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    '-----------------------------------------------------------------------------------------------
    Debug.Print "Workbook_BeforeSaveイベントが発生しました。" & g_cnsModuleName
End Sub

'***************************************************************************************************
'* 処理名 :Workbook_Open
'* 機能  :ワークブックを開く時のイベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_Open()
    '-----------------------------------------------------------------------------------------------
    Debug.Print "Workbook_Openイベントが発生しました。" & g_cnsModuleName
End Sub

'***************************************************************************************************
'* 処理名 :Workbook_SheetActivate
'* 機能  :シートを切り替えるイベント(⇒アクティブ)
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :Arg1 = Sheet(Object)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    '-----------------------------------------------------------------------------------------------
    Debug.Print "Workbook_SheetActivateイベントが発生しました。" & Sh.Name & " " & g_cnsModuleName
End Sub

'***************************************************************************************************
'* 処理名 :Workbook_SheetDeactivate
'* 機能  :シートを切り替えるイベント(⇒非アクティブ)
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :Arg1 = Sheet(Object)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    '-----------------------------------------------------------------------------------------------
    Debug.Print "Workbook_SheetDeactivateイベントが発生しました。" & Sh.Name & " " & g_cnsModuleName
End Sub

'***************************************************************************************************
'* 処理名 :Workbook_WindowActivate
'* 機能  :ウィンドウを切り替えるイベント(⇒アクティブ)
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :Arg1 = Window(Object)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
    '-----------------------------------------------------------------------------------------------
    Debug.Print "Workbook_WindowActivateイベントが発生しました。" & g_cnsModuleName
End Sub

'***************************************************************************************************
'* 処理名 :Workbook_WindowDeactivate
'* 機能  :ウィンドウを切り替えるイベント(⇒非アクティブ)
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :Arg1 = Window(Object)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月16日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
    '-----------------------------------------------------------------------------------------------
    Debug.Print "Workbook_WindowDeactivateイベントが発生しました。" & g_cnsModuleName
End Sub

'----------------------------------------<< End of Source >>----------------------------------------
※各プロシージャとも、このサンプルではイミディエイトウィンドウへのメッセージ表示のみです。