7.6 開いたときに自動で実行!
マクロは、時と場合によってはワークブックを開いたときに自動で実行したいときもあるでしょう。ごく希に、勝手に実行してほしくないときもありますが…開いたとたんに悪さを始めるマクロとか(汗)

ワークブックを開いたときに自動実行したい場合は、ワークブックが持つマクロのイベントWorkbook/Openという所にコードを記述するか、標準モジュールの中にAuto_Openという名前のプロシジャを作っておく2種類の方法があります。

なお、マクロを書く場所については、エクセルスマイル「4.マクロを書く場所」をどうぞ。
ワークブックのOpenイベントに書く場合
ワークブックのOpenイベントに記述する場合は、ThisWorkbookにあるWorkbookオブジェクトのOpenというイベントを選択(右図参照)し、その中へコードを記述してください。

例では、ワークブックを開いたときに「いらっしゃいませ」というメッセージを表示しています。


Private Sub Workbook_Open()

    MsgBox "いらっしゃいませ!"

End Sub
 ※このエクセルマクロはThisWorkbookへ記述するマクロです
Auto_Openを使う場合
Auto_Openを使う場合は、標準モジュールを追加しAuto_Openという名前のプロシジャを作り、その中へマクロを記述してください。

例では、ワークブックを開いたときに「あとは運次第…」という怪しげな(笑)メッセージを表示しています。

Sub Auto_Open()

    MsgBox "あとは運次第…"

End Sub
 ※このエクセルマクロは標準モジュールへ記述するマクロです
どちらが先に動くか
ワークブックのOpenイベントと、Auto_Openへ書いたマクロのうち、先に動くのはワークブックのOpenイベントの方です。

ワークブックのOpenイベントのマクロが動いた後、Auto_Openのマクロが動作します。
Auto_Openを回避したいとき
マクロの自動実行を仕込んだ後は、マクロを有効にするボタンを押した瞬間マクロが動き出します。しかし、いざ何かの都合でマクロを直したいときなどに困ってしまいます。かと言ってマクロを無効にするを押すと、テストするときに不便だし…なんてときの自動実行回避策です。

「マクロを有効にするボタンを押すときにシフトキーを押したまま」にしておきます。Auto_Openなどを回避しワークブックを開くことが出来ます。このあたり(シフトキーで回避)のやりかたはAccessと同じですね!

もし、マクロのセキュリティを低(なかなかいないと思いますが…詳しくはエクセルスマイル「5.マクロのセキュリティについて」)にしている強者の方だとこのダイアログが出ないので、ワークブックを開くときにシフトキーを押しっぱなしにして開いてください。
Copyright(C) 1999-2006 結城圭介。 All rights reserved