いくつかのアクティブ化/非アクティブ化メソッドがあります
Private Sub myOlExp_Activate()
'stuff
End Sub
Private Sub myOlExp_Deactivate()
End Sub
を介してExplorerオブジェクトに接続されています
Public WithEvents myOlExp As Outlook.Explorer
Set myOlExp = Application.ActiveExplorer (called in the "Application_Startup" method)
ただし、電子メールやイベントなどを開くと、ActiveExplorerが変更されたように見えるため、非アクティブ化イベントが呼び出されます。
アクティブ化/非アクティブ化イベントをOutlookが持つことができるすべてのエクスプローラーに関連付けて、アプリケーションをOutlookとの間で切り替えるときにのみアクティブ化/非アクティブ化メソッドが呼び出されるようにします。つまり、ExcelからOutlookに切り替えたときにメソッドを呼び出し、Excelに戻るまで、電子メールを開いたり、会議をスケジュールしたりするときに非アクティブ化イベントを呼び出さないでください。
Application.Explorers
開いているエクスプローラーのみが返されるようです(したがって、アイテムなどを開くと、新しいアイテムが作成されているように見えます)。これを機能させることは可能かもしれませんが、私はそれを理解していません。
基本的に、表示しているOutlookアイテム/ウィンドウに依存しない「outlook.activate」および「outlook.deactivate」メソッドが必要です。