こんにちは、今回の記事はExcelのVBAでWorkbook_Open()の処理が実行されないのはなぜ?という記事になります。
とある日、Excelファイルが開いたときに処理が実行されないような動きになってしまいました。VBAマクロの処理自体にミスはないはず…!
となったので、色々調べてみました。それでは、いってみましょう!
原因:標準モジュールに記載していたから
Excelファイルを開いたときにWorkbook_Open()部分の処理が動かなかったのは、標準モジュールにWorkbook_Open()プロシージャーを記入していたからでした。
具体例で言うと、以下のマクロを標準モジュールに追加していました。Excelファイルを開いたときに、表示倍率を100%に整える処理を想定していました。
Private Sub Workbook_Open()
ActiveWindows.Zoom = 100
End Sub
ですが、Workbook_Open()プロシージャーは、ThisWorkbookに記述しなければならなかったのです。違う場所に記入していたので、上手く動かなかったようです。
対処:ThisWorkbookに記載する
対処としては、標準モジュールに追加するのではなくて、ThisWorkbookにWorkbook_Open()プロシージャーを記述することで無事に処理がはしりました。
余談:標準モジュールとThisWorkbookの違い
と思ったので、少し調べてみました。(※ざっくりとした説明です。)
標準モジュールとThisWorkbookの違いは、今回のように起動条件や用途が違うようでした。今回のように記述する箇所が違えば動かないことありますね。そして、用途については標準モジュールはブック内から呼び出せる共通的な処理を書き、ThisWorkbookは特定のブックに対して行いたい処理を書くようでした。
さいごに
いかがだったでしょうか!同じような状況に陥った方の参考になれば幸いです。それでは、また次の記事でお会いしましょう!