none
Outlook を最小化して起動するとVBAのApplication_Startupイベントが呼ばれません RRS feed

  • 質問

  • 現在、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() を動かす手段は
    ないでしょうか。


    よろしくお願いします。

    2014年6月27日 3:56

回答

  • こんにちは。

    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
    2014年6月30日 0:54

すべての返信

  • こんにちは。

    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
    2014年6月30日 0:54
  • ご返信どうもありがとうございます。

    Application_Startup とは別に関数をPublicで作成して、autorunスイッチで指定することにより
    目的に応じた起動が出来るようになりました。

    どうもありがとうございました。

    2014年7月1日 1:06