Listar o nome e a localização do escritório de cada gerente pertencente a uma lista de distribuição do Exchange
Este tópico descreve como permitir que um usuário selecione uma lista de distribuição do Exchange e exiba o nome e o local do escritório de cada membro que é um gerente pertencente a essa lista de distribuição. As etapas principais desse procedimento são as seguintes:
O exemplo de código abaixo exibe uma caixa de diálogo Selecionar Lista de Distribuição para o usuário selecionar uma lista de distribuição.
Ele usa o objeto SelectNamesDialog para exibir a caixa de diálogo e obter a seleção do usuário. Em seguida, o exemplo obtém a seleção do usuário por meio da propriedade SelectNamesDialog.Recipients .
Para cada membro na lista de distribuição selecionada:
- Se o membro for um gerente, o exemplo de código exibirá o nome e o telefone do escritório do gerente.
Cada membro na lista de distribuição é um objeto AddressEntry . Ao verificar se o AddressEntry.AddressEntryUserType é olExchangeUserAddressEntry ou olExchangeRemoteUserAddressEntry, o exemplo atribui o objeto AddressEntry a um objeto ExchangeUser e usa
ExchangeUser.GetDirectReports.Count >0
como critério para determinar se o usuário é um gerenciador. Em seguida, ele exibe as propriedades Nome e OfficeLocation do objeto ExchangeUser .Se o membro for uma lista de distribuição, o exemplo de código chamará a sub-rotina
EnumerateDLManagers
. Para cada membro na lista de distribuição, caso seja um gerente, o exemplo de código exibirá seu nome e seu telefone do escritório.
Copie o exemplo de código Visual Basic for Applications a seguir para o Editor do Visual Basic e execute ShowManagersOfGroups
. Observe que esse código de exemplo aplica-se somente a uma lista de distribuição que possui apenas usuários do Exchange como membros, ou que possui listas de distribuição do Exchange como membros, mas todos os membros desta terão que ser usuários do Exchange. Será necessário personalizar mais o código se houver mais aninhamentos de listas de distribuição como membros.
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
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.