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 :
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 .
Pour chaque membre de la liste de distribution sélectionnée :
- 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 .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.