Поделиться через


Отображение имени и расположения офиса каждого руководителя из списка рассылки Exchange

В этом разделе описывается, как разрешить пользователю выбирать список рассылки Exchange и отображать имя и расположение офиса каждого участника, который является руководителем этого списка рассылки. Ниже приведены основные этапы этой процедуры.

  1. В приведенном ниже примере кода отображается диалоговое окно Выбор списка рассылки , в котором пользователь может выбрать список рассылки.

    Он использует объект SelectNamesDialog для отображения диалогового окна и получения выбора пользователя. Затем пример получает выбор пользователя с помощью свойства SelectNamesDialog.Recipients .

  2. Для каждого участника в выбранном списке рассылки:

    1. Если участник является руководителем, в примере кода отображаются имя и номер офиса руководителя.

    Каждый член в списке рассылки является объектом AddressEntry . Проверяя, является ли addressEntry.AddressEntryUserTypeolExchangeUserAddressEntry или olExchangeRemoteUserAddressEntry, этот пример назначает объект AddressEntry объекту ExchangeUser и использует ExchangeUser.GetDirectReports.Count >0 в качестве критерия, чтобы определить, является ли пользователь менеджером. Затем отображаются свойства Name и OfficeLocation объекта ExchangeUser .

  3. Если участник является списком рассылки, пример кода вызывает подпрограмму 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 и обратная связь.