Compartir a través de


Buscar y obtener elementos en una vista agregada (Outlook)

El método GetTable del objeto TableView puede devolver un objeto Table que contiene elementos de una o varias carpetas del mismo almacén o que se extiende a través de varios almacenes, en una vista agregada. Esto es muy útil cuando desea tener acceso a elementos devueltos de una búsqueda; por ejemplo, una búsqueda de todos los elementos de un almacén. Este tema muestra un ejemplo de cómo usar la Búsqueda instantánea para buscar todos los elementos recibidos del administrador del usuario actual que están marcados como importantes, y luego mostrar el asunto de cada resultado de búsqueda.

El ejemplo de código siguiente contiene el GetItemsInView método . GetItemsInView primero realiza unas comprobaciones para ver si el usuario actual de la sesión de Outlook usa el servidor Microsoft Exchange, si el usuario actual es un administrador o si la Búsqueda instantánea está activa en un almacén predeterminado de la sesión.

Dado que la búsqueda final se basa en el método Search del objeto Explorer y la visualización del resultado final usa el método GetTable , que se basa en la vista actual de la carpeta actual del explorador activo, GetItemsInView crea un explorador, muestra la Bandeja de entrada en este explorador y configura la búsqueda mediante este objeto Explorer . GetItemsInView especifica los criterios de búsqueda como elementos importantes del administrador del usuario actual y el ámbito de búsqueda como todas las carpetas del tipo de elemento MailItem .

Después de que GetItemsInView llama al método Explorer.Search, cualquier resultado de búsqueda se muestra en este explorador, incluso los elementos de otras carpetas y almacenes que cumplen los criterios de búsqueda. GetItemsInView obtiene un objeto TableView que contiene esta vista de explorador de los resultados de búsqueda. Al usar el método GetTable de este objeto TableView, GetItemsInView luego obtiene un objeto Table que contiene los elementos agregados devueltos de la búsqueda. Por último, GetItemsInView muestra la columna subject de cada fila del objeto Table que representa un elemento en los resultados de la búsqueda.

El siguiente ejemplo de código administrado está escrito en C#. Para ejecutar un ejemplo de código administrado de .NET Framework que necesita llamar un modelo de objetos componentes (COM), debe utilizar un ensamblado de interoperabilidad que defina y asigne interfaces administradas a los objetos COM de la biblioteca de tipos de modelos de objetos. Para Outlook, puede utilizar Visual Studio y el ensamblado de interoperabilidad primario (PIA) de Outlook. Antes de ejecutar ejemplos de código administrado para Outlook 2013, compruebe que tiene el PIA de Outlook 2013 instalado y que ha añadido una referencia al componente biblioteca de objetos de Microsoft Outlook 15.0 en Visual Studio.

Use el código siguiente en la ThisAddIn clase de un complemento de Outlook (con Office Developer Tools para Visual Studio). El objeto Application del código debe ser un objeto Application de Outlook de confianza proporcionado por ThisAddIn.Globals. Para obtener más información sobre el uso del PIA de Outlook para desarrollar soluciones administradas de Outlook, vea la Referencia del ensamblado de interoperabilidad principal de Outlook.

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"]); 
                } 
            } 
        } 
    } 
} 

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.