2016-08-19 99 views
0

我在这种情况下必须导入组织中的所有联系人,包括群组或群组联系人。我有我在某处找到的这段代码,但这不包括联系人组。这只会导入联系人。Outlook中的导入联系人/ Nab群组

Sub Email_Extract() 
Dim colAL As Outlook.AddressLists 
Dim oAL As Outlook.AddressList 
Dim colAE As Outlook.AddressEntries 
Dim oAE As Outlook.AddressEntry 
Dim oExUser As Outlook.ExchangeUser 
Dim n As Long 

Set colAL = Outlook.Application.Session.AddressLists 

For Each oAL In colAL 
StartTime = Timer 

If oAL.AddressListType = olExchangeGlobalAddressList Then 

Set colAE = oAL.AddressEntries 
    n = 2 
     For Each oAE In colAE 

      If oAE.AddressEntryUserType = olExchangeUserAddressEntry Then 

       Set oExUser = oAE.GetExchangeUser 

       ThisWorkbook.Sheets("Sheet1").Cells(n, 1).Value = oExUser.Name 'User Name 
       ThisWorkbook.Sheets("Sheet1").Cells(n, 2).Value = oExUser.PrimarySmtpAddress 'SMTP address 
       n = n + 1 
       Cells(n, 1).Activate 
      End if 
     Next 
    Endif 
Next 
End sub 

请注意,它的运行时间取决于组织的电子邮件地址。我发现了一些信息here但这个想法有点悬而未决。无论如何,我可以在这个过程中包括联络小组?请帮忙。谢谢。

回答

1

这是暗示有其他类型,所以不限于一种类型。

If oAE.AddressEntryUserType = olExchangeUserAddressEntry Then 

这演示了如何处理其他类型。 (演示代码设置为Outlook而不是Excel。)

Option Explicit 

Sub Email_Extract() 

Dim colAL As Outlook.AddressLists 
Dim oAL As Outlook.AddressList 
Dim colAE As Outlook.AddressEntries 
Dim oAE As Outlook.AddressEntry 
Dim oExUser As Outlook.exchangeUser 

Set colAL = Session.AddressLists 

For Each oAL In colAL 

    If oAL.AddressListType = olExchangeGlobalAddressList Then 

     Set colAE = oAL.AddressEntries 

     For Each oAE In colAE 

      If oAE.AddressEntryUserType = olExchangeUserAddressEntry Then 
       'Set oExUser = oAE.GetExchangeUser 
       'Debug.Print oExUser.Name 

      ElseIf oAE.AddressEntryUserType = olExchangeDistributionListAddressEntry Then 
       ' https://msdn.microsoft.com/en-us/library/office/ff868214.aspx 
       ' An address entry that is an Exchange distribution list. 
       Debug.Print vbCr & "Exchange distribution list - AddressEntryUserType: " & oAE.AddressEntryUserType 
       Debug.Print " " & oAE.Name 

      Else 
       'Debug.Print vbCr & "? - AddressEntryUserType: " & oAE.AddressEntryUserType 
       'Debug.Print " " & oAE.Name 

      End If 
     Next 
    End If 
Next 

End Sub