Auflisten des Namens und des Bürostandorts jedes Vorgesetzten, der zu einer Exchange-Verteilerliste gehört

In diesem Thema wird beschrieben, wie Sie es einem Benutzer ermöglichen können, eine Exchange-Verteilerliste auszuwählen und den Namen und den Bürostandort jedes Mitglieds anzuzeigen, das als Vorgesetzter zu dieser Verteilerliste gehört. Die wichtigsten Schritte dieses Verfahrens sind folgende:

  1. Im folgenden Codebeispiel wird ein Dialogfeld Verteilerliste auswählen angezeigt, in dem der Benutzer eine Verteilerliste auswählen kann.

    Es verwendet das SelectNamesDialog-Objekt , um das Dialogfeld anzuzeigen und die Benutzerauswahl abzurufen. Dann wird die Benutzerauswahl durch die SelectNamesDialog.Recipients -Eigenschaft abgerufen.

  2. Für jedes Mitglied in der ausgewählten Verteilerliste gilt Folgendes:

    1. Wenn das Mitglied ein Vorgesetzter ist, zeigt das Codebeispiel den Namen und die Büronummer des Vorgesetzten an.

    Jedes Element in der Verteilerliste ist ein AddressEntry-Objekt . Indem überprüft wird, ob AddressEntry.AddressEntryUserType entweder olExchangeUserAddressEntry oder olExchangeRemoteUserAddressEntry ist, weist das Beispiel das AddressEntry-Objekt einem ExchangeUser-Objekt zu und verwendet ExchangeUser.GetDirectReports.Count >0 als Kriterium, um zu bestimmen, ob der Benutzer ein Manager ist. Anschließend werden die Eigenschaften Name und OfficeLocation des ExchangeUser-Objekts angezeigt.

  3. Wenn es sich bei dem Member um eine Verteilerliste handelt, wird im Codebeispiel die Unterroutine EnumerateDLManagersaufgerufen. Für jedes Mitglied in der Verteilerliste, das ein Vorgesetzter ist, werden dann der Name und die Büronummer des Vorgesetzten angezeigt.

Kopieren Sie das folgende Visual Basic for Applications Codebeispiel in den Visual Basic-Editor, und führen Sie ausShowManagersOfGroups. Beachten Sie, dass dieses Codebeispiel nur für eine Verteilerliste gilt, die als Mitglieder nur Exchange-Benutzer enthält oder die als Mitglieder Exchange-Verteilerlisten enthält, wobei jedoch alle Mitglieder der letzteren Exchange-Benutzer sein müssen. Wenn es sich bei den Mitgliedern um weiter verschachtelte Verteilerlisten handelt, muss der Code weiter angepasst werden.

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

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.