次の方法で共有


Outlook のイベントを理解する

Microsoft Office 2000/Visual Basic プログラマーズ ガイド   

Outlook には 2 つのイベントのクラスがあり、各クラスは異なる方法で使用されます。最初のクラスは、Outlook の特定のアイテムに関連するアイテム レベルのイベントを表します。たとえば、Outlook の MailItem オブジェクトには、Open、Close、Forward、Send などのイベントがあります。以前のバージョンの Outlook と同様に、アイテム自体に含まれる VBScript コードを使用してアイテム レベルのイベントを処理します。

Outlook でサポートされているもう 1 つのイベントのクラスは、アプリケーション レベルのイベントを表します。これらのイベントは、アプリケーション自体、またはフォルダや Outlook バーなどの、アプリケーション内の最上位オブジェクトに関連しているため、VBA コードを使用しすることによってこれらのイベントを処理できます。

アプリケーション レベルのイベント

Word または Excel で新しい VBA プロジェクトを作成すると、既定により、プロジェクトにはアプリケーションの現在のドキュメントに連結されたクラス モジュールが含まれます。たとえば、Word は ThisDocument オブジェクトに対するモジュールを、Excel は ThisWorkbook オブジェクトに対するモジュールをそれぞれ作成します。Outlook では VBA を使用してアプリケーションで作業を行うため、VBA プロジェクトには ThisOutlookSession と呼ばれるクラス モジュールが含まれます。このクラス モジュールは Outlook の Application オブジェクトにあらかじめ連結されています。その結果、[オブジェクト] ボックスで [Application] オブジェクトをクリックすると、Visual Basic Editor の [プロシージャ] ボックスに表示されるすべてのアプリケーション レベルのイベントが使用可能になります。

Application オブジェクトに関連するイベントは 6 種類あり、これらを使用してカスタム VBA プロシージャを実行できます。たとえば、Startup イベントを使用してカスタム プロシージャを呼び出し、Outlook のワークスペースをカスタマイズしたり、カスタム コマンド バーやコマンド バー コントロールを作成または表示することができます。また、NewMail イベント プロシージャを使用して、受信メールを処理する独自の規則をインプリメントするカスタム プロシージャを呼び出すことができます。これらのイベントには機能を表す名前が付いていますが、各イベントの詳細については、Microsoft Outlook Visual Basic リファレンス ヘルプの [キーワード] タブで目的のイベント名を検索し、関連するトピックを参照してください。

その他の Outlook イベント

ほかの Outlook オブジェクトによって公開されたイベント プロシージャでの作業は、ほかの Office アプリケーションでイベント プロシージャを作成する作業と似ていますが、Application オブジェクト イベントでの作業よりも多くのステップがいくつか必要です。まず、作業する各オブジェクトの ThisOutlookSession モジュールまたはほかのクラス モジュールで、WithEvents キーワードを使用してオブジェクト変数を宣言する必要があります。次に、イベントが発生したときに実行するイベント プロシージャに VBA コードを追加します。さらに、作成したオブジェクト変数を初期化します。

たとえば、次の VBA コードは、Outlook バーを表すオブジェクト変数を ThisOutlookSession モジュールに作成します。

  Dim WithEvents obpOutlookBar As Outlook.OutlookBarPane

上記の例のようにオブジェクト変数を宣言すると、クラス モジュールのコード ウィンドウにある [オブジェクト] ボックスに変数名が表示されます。[オブジェクト] ボックスからこの変数を選択すると、オブジェクトの使用可能なイベント プロシージャを [プロシージャ] ボックスで選択できます。たとえば、前の OutlookBarPane オブジェクトは、BeforeGroupSwitch および BeforeNavigate イベントを公開します。

  Private Sub opbOutlookBar_BeforeNavigate(ByVal Shortcut As OutlookBarShortcut, _
      Cancel As Boolean)
   If Shortcut.Name <> "Inbox" Then
      Msgbox "受信トレイに対する権限はアクセス権のみです。"
      Cancel = True
   End If
End Sub

ここで、オブジェクト変数を初期化する必要があります。オブジェクト変数の初期化は、Application オブジェクトの Startup イベント プロシージャ (ここでは変数は常に使用可能)、またはオブジェクト変数を初期化するために作成したカスタム プロシージャで実行できます。次のコードは、Startup イベント プロシージャを使用してオブジェクト変数を初期化する方法です。

  Private Sub Application_Startup()
   Set opbOutlookBar = Application.ActiveExplorer.Panes("OutlookBar")
End Sub

オブジェクト変数のインスタンス作成方法については、Microsoft Outlook Visual Basic リファレンス ヘルプの [キーワード] タブで目的のオブジェクト名を検索し、関連するトピックを参照してください。たとえば、OutlookBarPane オブジェクトのヘルプ トピックでは、オブジェクトが Panes コレクションのメンバであり、"OutlookBar" という文字列を使用してコレクション内のオブジェクトを識別することが説明されています。

Outlook オブジェクト モデルのオブジェクト、メソッド、およびプロパティに関する詳細については、C:\Program Files\Microsoft Office\Office\1041\Vbaoutl9.chm ファイルに含まれる Microsoft Outlook Visual Basic リファレンス ヘルプを参照してください。

メモ   上記の Vbaoutl9.chm ヘルプ ファイルへのパスは、Office の日本語版における言語 ID フォルダ (1041) を示しています。C:\Program Files\Microsoft Office\Office 以下の言語 ID フォルダは各言語により異なります。