選択されたスレッドを取得して列挙する

既定では、Microsoft Outlook は会話によって受信トレイにアイテムを表示します。 ユーザーが受信トレイで選択を行った場合、プログラムで選択項目を取得でき、これにはスレッドの見出しとアイテムも含まれます。 このトピックのコード例では、受信トレイ内の選択項目を取得し、選択されている各スレッドのメール アイテムを列挙する方法を示します。

この例には、 という 1 つのメソッドが DemoConversationHeadersFromSelection含まれています。 メソッドは現在のビューを受信トレイに設定し、現在のビューが日付で並べ替えられた会話を表示するテーブル ビューであるかどうかを確認します。 選択した ConversationHeader オブジェクトを含む選択範囲を取得するには、 DemoConversationHeadersFromSelectionSelection オブジェクトの GetSelection メソッドを使用し、OlSelectionContents.olConversationHeaders 定数を引数として指定します。 会話ヘッダーが選択されている場合は、 DemoConversationHeadersFromSelectionSimpleItems オブジェクトを使用して、選択した各会話内の項目を列挙し、 MailItem オブジェクトであるそれらの会話アイテムの件名を表示します。

次のマネージ コードは C# で作成されています。 コンポーネント オブジェクト モデル (COM) に呼び出す必要がある .NET Framework マネージ コード サンプルを実行するには、マネージ インターフェイスを定義し、オブジェクト モデル タイプ ライブラリの COM オブジェクトにマップする相互運用機能アセンブリを使用する必要があります。 Outlook の場合、Visual Studio および Outlook プライマリ相互運用機能アセンブリ (PIA) を使用できます。 Outlook 2013 用のマネージ コード サンプルを実行する前に、Outlook 2013 PIA をインストールしており、Visual Studio で Microsoft Outlook 15.0 オブジェクト ライブラリ コンポーネントへの参照を追加していることを確認してください。 Outlook アドインのクラスで次のコードを ThisAddIn 使用する必要があります (Office Developer Tools for Visual Studio を使用)。 コードの Application オブジェクトは で提供された、信頼済み Outlook ThisAddIn.Globals オブジェクトである必要があります。 Outlook PIA を使用してマネージド Outlook ソリューションを開発する方法の詳細については、MSDN の 「Outlook プライマリ相互運用機能アセンブリ リファレンスへようこそ」を参照 してください。

private void DemoConversationHeadersFromSelection() 
{ 
    // Obtain Inbox. 
    Outlook.Folder inbox = 
        Application.Session.GetDefaultFolder( 
        Outlook.OlDefaultFolders.olFolderInbox) 
        as Outlook.Folder; 
 
    // Set ActiveExplorer.CurrentFolder to Inbox. 
    // Inbox must be current folder. 
    Application.ActiveExplorer().CurrentFolder = inbox; 
 
    // Ensure that the current view is a table view. 
    if (inbox.CurrentView.ViewType == 
        Outlook.OlViewType.olTableView) 
    { 
        Outlook.TableView view = 
            inbox.CurrentView as Outlook.TableView; 
        // And check if the table view organizes conversations by date. 
        if (view.ShowConversationByDate == true) 
        { 
            Outlook.Selection selection = 
                Application.ActiveExplorer().Selection; 
            Debug.WriteLine("Selection.Count = " + selection.Count); 
             
             // Call GetSelection to create a Selection object 
            //  that includes any selected conversation header objects. 
            Outlook.Selection convHeaders = 
                selection.GetSelection( 
                Outlook.OlSelectionContents.olConversationHeaders) 
                as Outlook.Selection; 
            Debug.WriteLine("Selection.Count (ConversationHeaders) = "  
                + convHeaders.Count); 
 
            // Check if any conversation headers are selected. 
            if (convHeaders.Count >= 1) 
            { 
                foreach (Outlook.ConversationHeader convHeader in convHeaders) 
                { 
                    // Enumerate the items in each conversation header object. 
                    Outlook.SimpleItems items = convHeader.GetItems(); 
                    for (int i = 1; i <= items.Count; i++) 
                    { 
                        // Only enumerate MailItems in this example. 
                        if (items[i] is Outlook.MailItem) 
                        { 
                            Outlook.MailItem mail =  
                                items[i] as Outlook.MailItem; 
                            Debug.WriteLine(mail.Subject  
                                + " Received:" + mail.ReceivedTime); 
                        } 
                    } 
                } 
            } 
        } 
    } 
} 

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。