2016-07-25 3 views
0

У меня есть кнопка с именем selectRec, которую пользователи будут нажимать в пользовательской форме.Запустить диалоговое окно адресной книги Outlook с помощью VBA

Я хочу, чтобы эта кнопка была нажата, затем в диалоговом окне «Адресная книга Outlook» предлагается добавить получателей. Затем получатели будут добавлены к ListBox1. В приведенном ниже коде только один получатель может быть добавлен, даже если выбрано много. Это связано с тем, что он получает доступ только к 1-му элементу массива oDialog.recipients.Item. Я не знаю, как использовать цикл для перебора через что-то я не знаю длину (так как они могут добавить столько адресов электронной почты, как они хотели)

Private Sub selectRec_Click() 

    Dim olApp As Outlook.Application 
    Dim oDialog As SelectNamesDialog 
    Dim oGAL As AddressList 
    Dim myAddrEntry As AddressEntry 
    Dim exchUser As Outlook.ExchangeUser 

    Dim AliasName As String 
    Dim FirstName As String 
    Dim LastName As String 
    Dim EmailAddress As String 

    Set olApp = GetObject(, "Outlook.Application") 
    Set oDialog = olApp.Session.GetSelectNamesDialog 
    Set oGAL = olApp.GetNamespace("MAPI").AddressLists("Global Address List") 

    With oDialog 
     .AllowMultipleSelection = True 
     .InitialAddressList = oGAL 
     .ShowOnlyInitialAddressList = True 



     If .Display Then 

      AliasName = oDialog.recipients.Item(1).Name 

      Set myAddrEntry = oGAL.AddressEntries(AliasName) 
      Set exchUser = myAddrEntry.GetExchangeUser 

      If Not exchUser Is Nothing Then 
       FirstName = exchUser.FirstName 
       LastName = exchUser.LastName 
       EmailAddress = exchUser.PrimarySmtpAddress 

      End If 
      ListBox1.AddItem (EmailAddress) 



     End If 
    End With 
Set olApp = Nothing 
Set oDialog = Nothing 
Set oGAL = Nothing 
Set myAddrEntry = Nothing 
Set exchUser = Nothing 
End Sub 

ответ

0

вам просто нужно использовать a для каждого контура и петли через каждого Получателя

If .Display Then 

    Dim userSelected As Outlook.Recipient 
     For Each userSelected In .Recipients 

      AliasName = userSelected.Name 

      Set myAddrEntry = oGAL.AddressEntries(AliasName) 
      Set exchUser = myAddrEntry.GetExchangeUser 

      If Not exchUser Is Nothing Then 
       FirstName = exchUser.FirstName 
       LastName = exchUser.LastName 
       EmailAddress = exchUser.PrimarySmtpAddress 

      End If 
      ListBox1.AddItem (EmailAddress) 

     Next 
    End If