役に立ちそうもないTips移転版

俺得なTipsを書き連ねるだけのブログ。

Excelの自動実行マクロ

ブックを開いたときに自動実行されるマクロ(もちろん、有効化しなきゃならんが)には二つあって
・Sub Auto_Open()というシグニチャのプロシージャ
・ThisWorkbookのOpenイベントハンドラ(つまりまあPrivate Sub Workbook_Open()だ)
こいつら何が違うかというと、
・シェルやExcelのメニューから手動で開いたときは、Openイベントハンドラ→Auto_Open()の順に実行。
・Workbooks.Openで開くとき、Openイベントハンドラは実行されるが、Auto_Open()は勝手には動かない。
 (動かしたければ、OpenしたWorkbookオブジェクトのRunAutoMacros()を別途呼ぶ。)
・さらにApplication.EnableEventsプロパティをFalseにしておくと(Openイベントがスルーされるので)Openイベントハンドラも実行されない。
といった違いがあるらしい。

ちなみにこの辺を回避するには、メニューから開くときにShift押しっぱなしにしとけばスルーされる。
(マクロ実行の可否を選ぶようになってる場合は、実行許可出した直後からShift押しかな?)