Partager via


Répertorier le nom et l’emplacement du bureau de chaque responsable appartenant à une liste de distribution Exchange

Cette rubrique explique comment permettre à un utilisateur de sélectionner une liste de distribution Exchange et d’afficher le nom et l’emplacement du bureau de chaque membre qui est un responsable appartenant à cette liste de distribution. Les étapes principales de cette procédure sont les suivantes :

  1. L’exemple de code ci-dessous affiche une boîte de dialogue Sélectionner une liste de distribution permettant à l’utilisateur de sélectionner une liste de distribution.

    Il utilise l’objet SelectNamesDialog pour afficher la boîte de dialogue et obtenir la sélection de l’utilisateur. L’exemple obtient ensuite la sélection de l’utilisateur via la propriété SelectNamesDialog.Recipients .

  2. Pour chaque membre de la liste de distribution sélectionnée :

    1. Si le membre est un responsable, l'exemple de code affiche son nom et le numéro de son bureau.

    Chaque membre de la liste de distribution est un objet AddressEntry . En vérifiant si AddressEntry.AddressEntryUserType est olExchangeUserAddressEntry ou olExchangeRemoteUserAddressEntry, l’exemple affecte ensuite l’objet AddressEntry à un objet ExchangeUser et utilise ExchangeUser.GetDirectReports.Count >0 comme critère pour déterminer si l’utilisateur est un responsable. Il affiche ensuite les propriétés Name et OfficeLocation de l’objet ExchangeUser .

  3. Si le membre est une liste de distribution, l’exemple de code appelle la sous-routine EnumerateDLManagers. Pour chaque membre de cette liste de distribution, s'il s'agit d'un responsable, l'exemple de code affiche alors son nom et le numéro de son bureau.

Copiez l’exemple de code Visual Basic pour Applications suivant dans Visual Basic Editor, puis exécutez ShowManagersOfGroups. Notez que cet exemple s'applique uniquement à une liste de distribution dont les membres sont des utilisateurs Exchange ou des listes de distribution Exchange dont les membres sont eux-mêmes des utilisateurs Exchange. Il conviendra d'approfondir la personnalisation du code si l'imbrication des listes de distribution est plus poussée.

Sub ShowManagersOfGroups() 
    Dim oRecip As Outlook.Recipient 
    Dim oSND As Outlook.SelectNamesDialog 
    Dim oAE As Outlook.AddressEntry 
    Dim oAEs As Outlook.AddressEntries 
    Dim oEU As Outlook.ExchangeUser 
    Dim oDL As Outlook.ExchangeDistributionList 
    Dim oLists As Outlook.AddressLists 
    Dim oList As Outlook.AddressList 
    Set oLists = Application.Session.AddressLists 
    For Each oList In oLists 
        If oList.Name = "All Groups" Then 
            Exit For 
        End If 
    Next 
    Set oSND = Application.Session.GetSelectNamesDialog 
    With oSND 
        .NumberOfRecipientSelectors = olShowTo 
        .InitialAddressList = oList 
        .Caption = "Select Distribution List" 
        .ToLabel = "D/L" 
        .ShowOnlyInitialAddressList = True 
        .AllowMultipleSelection = False 
        .Display 
    End With 
    For Each oRecip In oSND.Recipients 
        If oRecip.AddressEntry.AddressEntryUserType = _ 
            olExchangeDistributionListAddressEntry Then 
            Set oDL = oRecip.AddressEntry.GetExchangeDistributionList 
            Set oAEs = oDL.GetExchangeDistributionListMembers 
            For Each oAE In oAEs 
                If oAE.AddressEntryUserType = olExchangeUserAddressEntry _ 
                    Or oAE.AddressEntryUserType = olExchangeRemoteUserAddressEntry Then 
                    Set oEU = oAE.GetExchangeUser 
                    If oEU.GetDirectReports.Count Then 
                        Debug.Print oEU.Name, oEU.OfficeLocation 
                    End If 
                ElseIf oAE.AddressEntryUserType = _ 
                    olExchangeDistributionListAddressEntry Then 
                    EnumerateDLManagers oAE 
                End If 
            Next 
        End If 
    Next 
End Sub 
 
Sub EnumerateDLManagers(oAddress As AddressEntry) 
    Dim oAE As Outlook.AddressEntry 
    Dim oAEs As Outlook.AddressEntries 
    Dim oEU As Outlook.ExchangeUser 
    Dim oDL As Outlook.ExchangeDistributionList 
     
    Set oDL = oAddress.GetExchangeDistributionList 
    Set oAEs = oDL.GetExchangeDistributionListMembers 
    For Each oAE In oAEs 
        If oAE.AddressEntryUserType = olExchangeUserAddressEntry _ 
            Or oAE.AddressEntryUserType = olExchangeRemoteUserAddressEntry Then 
            Set oEU = oAE.GetExchangeUser 
            If oEU.GetDirectReports.Count Then 
                Debug.Print oEU.Name, oEU.OfficeLocation 
            End If 
        End If 
    Next 
End Sub

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.