トップ回答者
Outlook を最小化して起動するとVBAのApplication_Startupイベントが呼ばれません

質問
-
現在、https://www.compnet.jp/index.php/archives/2990 に記載されているコードを
元に、 Outlook 2007/Outlook 2010 で動く、返信アカウントごとに異なるBccを自動的
に追加する マクロを書いている最中です。ほぼ思うように動作したのですが、どうし
てもOutlookのVBA マクロの動作が分からない点があるので教えてください。Outlook 2010の起動時に、プロパティで 『実行時の大きさ』を通常のウィンドウに設定
しているとApplication_Startup() が呼び出され、マクロが動作するのですが、プロパ
ティで『実行時の大きさ』 を 最小化 に設定していると、Application_Startup() が
呼び出されません。Application_Startup()が呼び出されない時は、ファイル→オプション→アドイン を確
認すると Microsoft VBA for Outlook アドイン がアクティブでないアプリケーション
アドインになっています。どうやら、Outlook 2010 を起動時に最小化する設定で実行するとVBAが動かず、
Application_Startup() が呼び出されないようです。この状態で、
Application_Startup() を開発→マクロで実行すると、きちんとマクロが動き、思った
通りの動作となります。(この時は実験用に、Application_Startup() をPublicにして
実験しました)今のところ、Application_Startup() 内に、
ActiveExplorer.WindowState = olMinimized
を記述して強制的に最小化することにより、この問題を回避しています。ただ、常に
起動時に最小化されると使いずらいので、ログイン時にスタートアップから実行する
ときは最小化、通常起動時は通常のウィンドウで動かしたいと考えています。Outlook 2010 を最小化して起動したときにもApplication_Startup() を動かす手段は
ないでしょうか。
よろしくお願いします。
回答
-
こんにちは。
Outlook 2010で確認してみましたが、たしかに最小化起動時にはStartupイベントが実行されないようですね。恐らくアプリケーションの仕様ではないかと思います。
> ただ、常に起動時に最小化されると使いずらいので、ログイン時にスタートアップから実行するときは最小化、通常起動時は通常のウィンドウで動かしたいと考えています。
であれば、たとえばThisOutlookSessionに下記のようにコードを入れておいて、スタートアップに置くショートカットファイルのリンク先を「"C:\Program Files\Microsoft Office\Office14\OUTLOOK.EXE" /autorun Project1.ThisOutlookSession.MinimizeWindow」のようにしておけば、スタートアップ実行時のみautorunスイッチ(コマンド ライン スイッチ)が働いて、ウィンドウを最小化するMinimizeWindowプロシージャが実行されるようになるかと思います。'ThisOutlookSession Option Explicit Private Sub Application_Startup() MsgBox "Application_Startup", vbSystemModal End Sub Private Sub MinimizeWindow() Application.ActiveExplorer.WindowState = olMinimized End Sub
- 回答としてマーク t.taka_ 2014年7月1日 10:21
すべての返信
-
こんにちは。
Outlook 2010で確認してみましたが、たしかに最小化起動時にはStartupイベントが実行されないようですね。恐らくアプリケーションの仕様ではないかと思います。
> ただ、常に起動時に最小化されると使いずらいので、ログイン時にスタートアップから実行するときは最小化、通常起動時は通常のウィンドウで動かしたいと考えています。
であれば、たとえばThisOutlookSessionに下記のようにコードを入れておいて、スタートアップに置くショートカットファイルのリンク先を「"C:\Program Files\Microsoft Office\Office14\OUTLOOK.EXE" /autorun Project1.ThisOutlookSession.MinimizeWindow」のようにしておけば、スタートアップ実行時のみautorunスイッチ(コマンド ライン スイッチ)が働いて、ウィンドウを最小化するMinimizeWindowプロシージャが実行されるようになるかと思います。'ThisOutlookSession Option Explicit Private Sub Application_Startup() MsgBox "Application_Startup", vbSystemModal End Sub Private Sub MinimizeWindow() Application.ActiveExplorer.WindowState = olMinimized End Sub
- 回答としてマーク t.taka_ 2014年7月1日 10:21