• ベストアンサー

アプリケーションのイベント(エクセルVBA)

エクセルを起動した時に、自動的にマクロを起動したいと思っています。どの、ブックを開いても同じマクロが起動させる(別のパソコンで同じファイルを起動した場合は、起動しなくても構いません。)には、アプリケーションのイベントを使う必要があると考え、クラスモジュールを使ってアプリケーションのイベントプロシージャを作ることは、本を読んで何とか理解しました。 -------clasモジュール-------- Public WithEvents App As Application Private Sub App_SheetBeforeRightClick(省略・・)  処理したい内容 Cancel = True end sub -------標準モジュール-------- Sub SetAppEvent() Set myclass.App = Application End Sub と書いて、SetAppEventを実行すると、以降右クリックでイベントが発せいしました。しかし、初めてエクセルを起動した時に一々SetAppEventを実行する必要があります。何か?いい方法は無いでしょうか?ご指導のほど宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 Personal.xls (個人用マクロブック)に、それらは登録しているはずですが、 '標準モジュールに Sub Auto_Open()   Call SetAppEvent End Sub と入れてください。 ThisWorkbook に入れない理由は、インスタンスは、必ず、ブックを起動したときのみに、発生させるようにしないといけないと思うからです。オートメーション・オブジェクトで発生してもよければ、ThisWorkbook_Openにしますが、私は、そのような設定は、思わぬトラブルが発生することがあるので、そのような方式を取りません。私は、そのように設定しています。 逆に、アドインの時は、ThisWorkbook に入れます。 一度、試してみてください。

wan_wan
質問者

お礼

こんばんわ!!ご指導の通りにやってみると出来ました。本当に有難う御座いました。

その他の回答 (1)

  • taocat
  • ベストアンサー率61% (191/310)
回答No.2

こんばんは。 >どのブックを開いても同じマクロが起動させる であれば、その「同じマクロ」を、 個人用マクロブック( PERSONAL.XLS )のWorkBook_Openイベントに書いたらどうですか? またはPERSONAL.XLSの標準モジュールに書いて、 PERSONAL.XLSのWorkBook_OpenイベントからCall 外してましたらご容赦!(^^; 以上です。