VBA Excelファイルを開けた時に処理を実行

VBAを実行する際にボタンを押下するなど、イベントを設定する必要があります。
今回は、Excelファイルを開けた時に実行させるイベントがありま。
Workbook_OpenとAuto_Openの2つのやり方があるので、それぞれ紹介していきます。

Workbook_Open

まず、Workbook_Openイベントを紹介していきます。
Workbook_Openイベントは、「ThisWorkbook」にイベントを作成する必要があります。
下記の画像の部分をクリックしてください。

クリックした後に、右側の上の部分で対象のイベントを選択してください。
今回は、「Workbook」「Open」を選択しましょう。

するとWorkbook_Openイベントが作成されました。
この中に処理を記載することで完了です。
今回は試しにメッセージボックスを表示してみました。

Private Sub Workbook_Open()
    MsgBox ("Workbook_Openイベントです")
End Sub

一度エクセルファイルを閉じて、再度開いてみましょう。

自動でメッセージボックスが表示されました。
このように、Excelを開けただけでイベントが発生します。

 

Auto_Open

今度はAuto_Openイベントを紹介していきます。
先ほどは、「ThisWorkbook」にイベントを記載しましたが、今回はモジュールに処理を記載します。

まずは、モジュールを作成しましょう。
左側のプロジェクトを右クリックして「挿入」を選択しましょう。

「標準モジュール」を選択して下してください。

モジュールが作成できたら、コードを記載していきます。

Sub Auto_Open()
    MsgBox ("Auto_Openイベントです")
End Sub

これで完成です。
先ほどと同じように、メッセージボックスを表示してみましょう。

エクセルファイルを閉じて、再度開けてみましょう。
すると、メッセージが表示されたと思います。

この時、「Workbook_Open」「Auto_Open」を同時に記載していると、
「Workbook_Open」⇒「Auto_Open」の順番でメッセージボックスが表示されました。
処理の優先順位が、「Workbook_Open」の方が優先ということですね。

別ブックから開ける場合

これらのイベントを利用する時に注意点があります。
別のブックからVBAでエクセルを開けて、Openイベントを実行したい時、
この場合は、「Workbook_Open」イベントを利用してください。
モジュールの「Auto_Open」イベントは実行されません。

イベントを記載しているのに処理が走らない場合は、このパターンが多いので注意してくださいね。

 

まとめ

エクセルファイルを開けたときにイベントを走らせるには、2つの方法が存在する。
「Workbook_Open」「Auto_Open」

優先順位は「Workbook_Open」⇒「Auto_Open」の順番です。

注意点として、別ブックから開ける場合は、「Workbook_Open」のみ使用可能です。

 

EXCEL VBAの記事一覧

おすすめの記事