Compartilhar via


Pesquisar e obter itens em uma exibição agregada (Outlook)

O método GetTable do objeto TableView pode retornar um objeto Table que contém itens de uma ou mais pastas na mesma loja ou abrangendo vários repositórios, em uma exibição agregada. Isso é particularmente útil quando você quer acessar itens retornados de uma pesquisa; por exemplo, uma pesquisa em todos os itens de email de um repositório. Este tópico mostra um exemplo de como usar a Pesquisa Instantânea para pesquisar todos os itens recebidos do gerente do usuário atual, os quais estejam marcados como importantes, e então exibir o assunto de cada resultado da pesquisa.

O exemplo de código a seguir contém o GetItemsInView método. GetItemsInViewprimeiro faz algumas verificações para ver se o usuário atual da sessão do Outlook usa o Microsoft Exchange Server, se o usuário atual tem um gerenciador e se a Pesquisa Instantânea está operacional no repositório padrão da sessão.

Como a pesquisa eventual depende do método Search do objeto Explorer , e a exibição de resultado eventual usa o método GetTable , que se baseia na exibição atual da pasta atual do explorador ativo, GetItemsInView cria um explorador, exibe a caixa de entrada neste explorador e configura a pesquisa usando este objeto Explorer . GetItemsInView especifica os critérios de pesquisa como itens importantes do gerenciador do usuário atual e o escopo de pesquisa como todas as pastas do tipo de item MailItem .

Depois GetItemsInView de chamar o método Explorer.Search , todos os resultados da pesquisa são exibidos neste explorador, incluindo itens de outras pastas e repositórios que atendem aos critérios de pesquisa. GetItemsInView obtém um objeto TableView que contém essa exibição do explorer dos resultados da pesquisa. Usando o método GetTable deste objeto TableView , GetItemsInView obtém um objeto Table que contém os itens agregados retornados da pesquisa. Por fim GetItemsInView , exibe a coluna de assunto de cada linha do objeto Table que representa um item nos resultados da pesquisa.

The following managed code is written in C#. To run a .NET Framework managed code sample that needs to call into a Component Object Model (COM), you must use an interop assembly that defines and maps managed interfaces to the COM objects in the object model type library. For Outlook, you can use Visual Studio and the Outlook Primary Interop Assembly (PIA). Before you run managed code samples for Outlook 2013, ensure that you have installed the Outlook 2013 PIA and have added a reference to the Microsoft Outlook 15.0 Object Library component in Visual Studio.

Use o código a ThisAddIn seguir na classe de um suplemento do Outlook (usando ferramentas de desenvolvedor do Office para Visual Studio). The Application object in the code must be a trusted Outlook Application object provided by ThisAddIn.Globals. Para obter mais informações sobre como usar o Outlook PIA para desenvolver soluções gerenciadas do Outlook, consulte a Referência de Assembly do Outlook Primary Interop.

private void GetItemsInView() 
{ 
    Outlook.AddressEntry currentUser = 
        Application.Session.CurrentUser.AddressEntry; 
 
    // Check if the current user uses the Exchange Server. 
    if (currentUser.Type == "EX") 
    { 
        Outlook.ExchangeUser manager = 
            currentUser.GetExchangeUser().GetExchangeUserManager(); 
 
        // Check if the current user has a manager. 
        if (manager != null) 
        { 
            string managerName = manager.Name; 
 
            // Check if Instant Search is enabled and operational in the default store. 
            if (Application.Session.DefaultStore.IsInstantSearchEnabled) 
            { 
                Outlook.Folder inbox = 
                    Application.Session.GetDefaultFolder( 
                    Outlook.OlDefaultFolders.olFolderInbox); 
 
                // Create a new explorer to display the Inbox as 
                // the current folder. 
                Outlook.Explorer explorer = 
                    Application.Explorers.Add(inbox, 
                    Outlook.OlFolderDisplayMode.olFolderDisplayNormal); 
 
                // Make the new explorer visible. 
                explorer.Display; 
 
                // Search for items from the manager marked important,
                // from all folders of the same item type as the current folder,
                // which is the MailItem item type. 
                string searchFor = 
                    "from:" + "\"" + managerName  
                    + "\"" + " importance:high"; 
                explorer.Search(searchFor, 
                    Outlook.OlSearchScope.olSearchScopeAllFolders); 
 
                // Any search results are displayed in that new explorer 
                // in an aggregated table view. 
                Outlook.TableView tableView =  
                    explorer.CurrentView as Outlook.TableView; 
 
                // Use GetTable of that table view to obtain items in that 
                // aggregated view in a Table object. 
                Outlook.Table table = tableView.GetTable(); 
                while (!table.EndOfTable) 
                { 
                    // Then display each row in the Table object 
                    // that represents an item in the search results. 
                    Outlook.Row nextRow = table.GetNextRow(); 
                    Debug.WriteLine(nextRow["Subject"]); 
                } 
            } 
        } 
    } 
} 

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.