Отображение имени и расположения офиса каждого руководителя из списка рассылки Exchange
В этом разделе описывается, как разрешить пользователю выбирать список рассылки Exchange и отображать имя и расположение офиса каждого участника, который является руководителем этого списка рассылки. Ниже приведены основные этапы этой процедуры.
В приведенном ниже примере кода отображается диалоговое окно Выбор списка рассылки , в котором пользователь может выбрать список рассылки.
Он использует объект SelectNamesDialog для отображения диалогового окна и получения выбора пользователя. Затем пример получает выбор пользователя с помощью свойства SelectNamesDialog.Recipients .
Для каждого участника в выбранном списке рассылки:
- Если участник является руководителем, в примере кода отображаются имя и номер офиса руководителя.
Каждый член в списке рассылки является объектом AddressEntry . Проверяя, является ли addressEntry.AddressEntryUserTypeolExchangeUserAddressEntry или olExchangeRemoteUserAddressEntry, этот пример назначает объект AddressEntry объекту ExchangeUser и использует
ExchangeUser.GetDirectReports.Count >0
в качестве критерия, чтобы определить, является ли пользователь менеджером. Затем отображаются свойства Name и OfficeLocation объекта ExchangeUser .Если участник является списком рассылки, пример кода вызывает подпрограмму
EnumerateDLManagers
. Для каждого участника в этом списке рассылки, если участник является руководителем, в примере кода отображаются имя и номер офиса руководителя.
Скопируйте приведенный ниже пример кода Visual Basic для приложений в редактор Visual Basic и выполните команду ShowManagersOfGroups
. Обратите внимание, что этот пример кода применяется только к списку рассылки, в который входят только пользователи Exchange или списки рассылки Exchange в качестве участников, но все члены последнего должны быть пользователями Exchange. Дальнейшая настройка кода потребуется, если списки рассылки больше вложены в качестве членов.
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
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.