Partager via


Identifier la liste d’adresses globale ou un ensemble de listes d’adresses avec un magasin

Dans une session Microsoft Outlook où plusieurs comptes Microsoft Exchange sont définis dans le profil, plusieurs listes d'adresses peuvent être associées à un magasin. Cette rubrique contient deux exemples de code qui illustrent comment extraire la Liste d’adresses globale pour une banque donnée et comment obtenir tous les objets AddressList associés à une banque donnée. Dans chacun de ces exemples de code, la banque qui nous concerne est celle du dossier actif affiché dans l’explorateur actif, mais l’algorithme d’obtention d’une Liste d’adresses globale ou d’un ensemble de listes d’adresses pour une banque s’applique à toute banque Exchange.

Le code managé suivant est écrit dans C#. Pour exécuter un exemple de code managé .NET Framework qui doit appeler un modèle COM (Component Object Model), vous devez utiliser un assembly d’interopérabilité qui définit et mappe des interfaces managées avec des objets COM dans la bibliothèque de types de modèle objet. Pour Outlook, vous pouvez utiliser Visual Studio et l’assembly d’interopérabilité de base (PIA) d’Outlook. Avant d’exécuter des exemples de code managé pour Outlook 2013, assurez-vous que vous avez installé le PIA d’Outlook 2013 et que vous avez ajouté une référence au composant Bibliothèque d’objets Microsoft Outlook 15.0 dans Visual Studio. Vous devez utiliser le code suivant dans la ThisAddIn classe d’un complément Outlook (à l’aide des Outils de développement Office pour Visual Studio). L'objet Application dans le code doit être un objet Application Outlook approuvé fourni par ThisAddIn.Globals. Pour plus d’informations sur l’utilisation de l’assembly PIA Outlook pour développer des solutions Outlook managées, consultez bienvenue dans la référence de l’assembly d’interopérabilité principal Outlook sur MSDN.

Le premier exemple de code contient la DisplayGlobalAddressListForStore méthode et la GetGlobalAddressList fonction . La DisplayGlobalAddressListForStore méthode affiche la liste d’adresses globale associée au magasin actuel dans la boîte de dialogue Sélectionner des noms . DisplayGlobalAddressListForStore commence par obtenir le magasin actif. Si le magasin actuel est un magasin Exchange, appelle GetGlobalAddressList pour obtenir la liste d’adresses globale associée au magasin actuel. GetGlobalAddressList utilise l’objet PropertyAccessor et la propriété MAPI, https://schemas.microsoft.com/mapi/proptag/0x3D150102, pour obtenir les UID d’une liste d’adresses et du magasin actuel. GetGlobalAddressList identifie une liste d’adresses comme associée à un magasin si leurs UID correspondent, et la liste d’adresses est la liste d’adresses globale si sa propriété AddressListType est olExchangeGlobalAddressList. Si l’appel à GetGlobalAddressList réussit, DisplayGlobalAddressListForStore utilise l’objet SelectNamesDialog pour afficher la liste d’adresses globale retournée dans la boîte de dialogue Sélectionner des noms .

void DisplayGlobalAddressListForStore() 
{ 
    // Obtain the store for the current folder 
    // as the current store. 
    Outlook.Folder currentFolder = 
        Application.ActiveExplorer().CurrentFolder 
        as Outlook.Folder; 
    Outlook.Store currentStore = currentFolder.Store; 
 
    // Check if the current store is Exchange. 
    if (currentStore.ExchangeStoreType != 
        Outlook.OlExchangeStoreType.olNotExchange) 
    { 
        Outlook.SelectNamesDialog snd =  
            Application.Session.GetSelectNamesDialog(); 
 
        // Try to get the Global Address List associated  
        // with the current store. 
        Outlook.AddressList addrList =  
            GetGlobalAddressList(currentStore); 
        if (addrList != null) 
        { 
            // Display the Global Address List in the  
            // Select Names dialog box. 
            snd.InitialAddressList = addrList; 
            snd.Display(); 
        } 
    } 
} 
 
public Outlook.AddressList GetGlobalAddressList(Outlook.Store store) 
{ 
    // Property string for the UID of a store or address list. 
    string  PR_EMSMDB_SECTION_UID =  
        @"https://schemas.microsoft.com/mapi/proptag/0x3D150102"; 
 
    if (store == null) 
    { 
        throw new ArgumentNullException(); 
    } 
 
    // Obtain the store UID using the property string and  
    // property accessor on the store. 
    Outlook.PropertyAccessor oPAStore = store.PropertyAccessor; 
 
    // Convert the store UID to a string value. 
    string storeUID = oPAStore.BinaryToString( 
        oPAStore.GetProperty(PR_EMSMDB_SECTION_UID)); 
 
    // Enumerate each address list associated 
    // with the session. 
    foreach (Outlook.AddressList addrList  
        in Application.Session.AddressLists) 
    { 
        // Obtain the address list UID and convert it to  
        // a string value. 
        Outlook.PropertyAccessor oPAAddrList =  
            addrList.PropertyAccessor; 
        string addrListUID = oPAAddrList.BinaryToString( 
            oPAAddrList.GetProperty(PR_EMSMDB_SECTION_UID)); 
 
        // Return the address list associated with the store 
        // if the address list UID matches the store UID and 
        // type is olExchangeGlobalAddressList. 
        if (addrListUID == storeUID && addrList.AddressListType == 
            Outlook.OlAddressListType.olExchangeGlobalAddressList) 
        { 
            return addrList; 
        } 
    } 
    return null; 
} 

Le deuxième exemple de code contient la méthode et GetAddressLists la EnumerateAddressListsForStore fonction . La EnumerateAddressListsForStore méthode affiche le type et l’ordre de résolution de chaque liste d’adresses définie pour le magasin actuel. EnumerateAddressListsForStore Obtient d’abord le magasin actuel, puis appelle GetAddressLists pour obtenir un objet List générique .NET Framework qui contient des objets AddressList pour le magasin actuel. GetAddressLists énumère chaque liste d’adresses définie pour la session, utilise l’objet PropertyAccessor et la propriété nommée MAPI, https://schemas.microsoft.com/mapi/proptag/0x3D150102, pour obtenir les UID d’une liste d’adresses et le magasin actuel. GetGlobalAddressList identifie une liste d’adresses comme associée à un magasin si ses UID correspondent et retourne un ensemble de listes d’adresses pour le magasin actuel. EnumerateAddressListsForStore utilise ensuite les propriétés AddressListType et ResolutionOrder de l'objet AddressList pour afficher le type et l'ordre de résolution de chaque liste d'adresses retournée.

private void EnumerateAddressListsForStore() 
{ 
    // Obtain the store for the current folder 
    // as the current store. 
    Outlook.Folder currentFolder = 
       Application.ActiveExplorer().CurrentFolder 
       as Outlook.Folder; 
    Outlook.Store currentStore = currentFolder.Store; 
 
    // Obtain all address lists for the current store. 
    List<Outlook.AddressList> addrListsForStore =  
        GetAddressLists(currentStore); 
    foreach (Outlook.AddressList addrList in addrListsForStore) 
    { 
        // Display the type and resolution order of each  
        // address list in the current store. 
        Debug.WriteLine(addrList.Name  
            + " " + addrList.AddressListType.ToString() 
            + " Resolution Order: " + 
            addrList.ResolutionOrder); 
     }  
} 
 
public List<Outlook.AddressList> GetAddressLists(Outlook.Store store) 
{ 
    List<Outlook.AddressList> addrLists =  
        new List<Microsoft.Office.Interop.Outlook.AddressList>(); 
 
    // Property string for the UID of a store or address list. 
    string PR_EMSMDB_SECTION_UID = 
        @"https://schemas.microsoft.com/mapi/proptag/0x3D150102"; 
 
    if (store == null) 
    { 
        throw new ArgumentNullException(); 
    } 
 
    // Obtain the store UID and convert it to a string value. 
    Outlook.PropertyAccessor oPAStore = store.PropertyAccessor; 
    string storeUID = oPAStore.BinaryToString( 
        oPAStore.GetProperty(PR_EMSMDB_SECTION_UID)); 
 
    // Enumerate each address list associated 
    // with the session. 
    foreach (Outlook.AddressList addrList 
        in Application.Session.AddressLists) 
    { 
        // Obtain the address list UID and convert it to  
        // a string value. 
        Outlook.PropertyAccessor oPAAddrList = 
            addrList.PropertyAccessor; 
        string addrListUID = oPAAddrList.BinaryToString( 
            oPAAddrList.GetProperty(PR_EMSMDB_SECTION_UID)); 
         
        // Add the address list to the resultant set of address lists 
        // if the address list UID matches the store UID. 
        if (addrListUID == storeUID) 
        { 
            addrLists.Add(addrList); 
        } 
    } 
    // Return the set of address lists associated with the store. 
    return addrLists; 
} 

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.