【VBA】ブックを開いた時にマクロを自動実行する

ブックを開いた時に
 ・マクロを自動的に実行
できます!

実現方法は2種類ありますが、ここでは
 ・公式サイトに記載されている方法
を記載します!
※もう1つは古い方法です。
※古い方法も参考として記載します。

Openイベントを利用することで
実現します!
※具体的にはSubプロシージャ「Workbook_Open」を作成します。

PR

Openイベントとは

ブックを開いた時に発生するイベントです。

Openイベントが発生すると、
 ・Excelが
 ・Subプロシージャ「Workbook_Open」を
 ・自動的に実行
してくれます。

よって
 ・Subプロシージャ「Workbook_Open」を作成することで
 ・ブックを開いた時にマクロが自動実行される
ようになります。

Subプロシージャ「Workbook_Open」の中に、「ブックを開いた時に自動実行したい処理」を記述します。


Subプロシージャ「Workbook_Open」は
 ・「ThisWorkbook」モジュール内に作成
する必要があります。

「ThisWorkbook」モジュール
「ThisWorkbook」モジュール
PR

VBAコード

ここでは例として
 ・デスクトップ配下の「sampl_001.xlsm」の
 ・「ThisWorkbook」モジュール内のSubプロシージャ「Workbook_Open」の中に
 ・メッセージを表示するVBAコード
します。
※メッセージ「おはようございます!本日もよろしくお願いします!」を表示するVBAコードを記載します。

デスクトップ配下の「sampl_001.xlsm」
デスクトップ配下の「sampl_001.xlsm」

「ThisWorkbook」モジュールの下記のプルダウンに「Workbook」と「Open」を指定にすれば、Subプロシージャ「Workbook_Open」が自動的に作成されます。

自動的に作成されたSubプロシージャ「Workbook_Open」
自動的に作成されたSubプロシージャ「Workbook_Open」


自動的に作成されたSubプロシージャ「Workbook_Open」の中に、VBAコードを記述します。

Private Sub Workbook_Open()

    MsgBox ("おはようございます!本日もよろしくお願いします!")

End Sub
PR

実行結果

デスクトップ配下の「sampl_001.xlsm」 を一旦閉じて、再度開くと
 ・メッセージ「おはようございます!本日もよろしくお願いします!」
が表示されました。
※ブックを開いた時にマクロを自動実行できました。

実行結果
実行結果
PR

参考①(Auto_Openについて)

Subプロシージャ「Auto_Open」でも、ブックを開いた時にマクロを自動実行できます

Subプロシージャ「Auto_Open」もSubプロシージャ「Workbook_Open」と同様に、ブックを開いた時にExcelにより自動実行されます。

ですがSubプロシージャ「Auto_Open」は
 ・古い方法
 ・互換性のために残されているもの
であるため、使用は控えるべきです。

以前は「Auto_Open」のみ存在していました。「Workbook_Open」は存在していませんでした。
※VBA関連の書籍が初めて出版されたのは1994年です(国会図書館のサイト調べ)。
※1994年に出版されたVBA関連の書籍は5冊です。
※5冊のうちの1つ「VBAハンドブック Excel5.0対応 入門編」には 、「Auto_Open」のみ記載があります。

「互換性のために残されている」とは
 ・既に「Auto_Open」を使用したVBAコードは世の中に存在しており
 ・使用不可にしてしまうとそれらのVBAコードが動かなくなってしまい
 ・多くの人が困ってしまうために、使用できるようにしておく
 ・ただいつ使用できなくしてもおかしくないため、使用は控えてください
ということです。
※「互換性のため使用可能だが非推奨」と言ったります。
※他のプログラミング言語にもよくあります。

既にSubプロシージャ「Auto_Open」で作成されている場合は、わざわざSubプロシージャ「Workbook_Open」へ作成し直す必要はありません。

Microsoftの公式ページには、「Auto_Open」に関する記載はありません。
※私が調査した限りにおいて。


なおSubプロシージャ「Auto_Open」は、標準モジュール内に記述します。
※「ThisWorkbook」モジュールではなく。

PR

参考②

OpenイベントやSubプロシージャ「Workbook_Open」の詳細は、公式サイトをご確認ください。


↑「Auto_Openを使って特定のブックを開くたびに実行~」とありますが、上記の公式サイトにはSubプロシージャ「Workbook_Open」の使用方法が記載されています。