ファイルを開く時に自動で動いて欲しいプログラムがあります。

例えば・・・

ファイルを起動した時には、必ず最初に表示させたいワークシートがある場合。
Enterキーを押した時にセルを移動する方向を、下方向ではなく右方向にしたい場合。
ユーザーフォームを表示させたい場合。
などなど。

下の例では、メッセージボックスを表示させていますが、ここに動かしたい処理を書きます。


ファイルが開く時に自動で動くプログラム(2つあります)

Private Sub Workbook_Open()
    MsgBox "ワークブック オープン"
End Sub

Sub Auto_Open()
    MsgBox "オート オープン"
End Sub

動く順番は、Workbook_Open の次に、Auto_Openです。



ファイルが閉じる時に自動で動くプログラム(2つあります)

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    MsgBox "ワークブック クローズ"
End Sub

Sub Auto_Close()
    MsgBox "オート クローズ"
End Sub

動く順番は、Workbook_BeforeClose の次に、Auto_Closeです



Workbook_Open と、Workbook_BeforeClose を書く場所

標準モジュール内ではなく、
「VBAProject」→「Microsoft Excel Objects」→「ThisWorkbook」の中に書きます。

「ThisWorkbook」の上部左のリストから「Workbook」を
「ThisWorkbook」の上部右のリストから「Open」「BeforeClose」を選択します。



Auto_Open と、Auto_Close を書く場所

標準モジュールの中に書きます。
「VBAProject」→「標準モジュール」→「Module1(など)」の中に書きます。



私は、Auto_Open が動作しなかった経験があり、それ以来、Workbook_Open と、Workbook_BeforeClose のみを利用しています。