3
我有一個VBA代碼來從Outlook 2013中獲取整個全局地址列表,並將值Name
和置於Excel工作表中。複製包括「外部聯繫人」的全局地址列表聯繫人
問題是它只是從我的SMTP返回電子郵件/用戶(我猜)。
在此圖像中,我們可以從SMTP看到用戶像我全身都是黑色的,並覆蓋紅色的外部用戶。我的代碼:
Sub tgr()
Dim appOL As Object
Dim oGAL As Object
Dim oContact As Object
Dim oUser As Object
Dim arrUsers(1 To 75000, 1 To 2) As String
Dim UserIndex As Long
Dim i As Long
Set appOL = CreateObject("Outlook.Application")
Set oGAL = appOL.GetNameSpace("MAPI").AddressLists("Global Address List").AddressEntries
For i = 1 To oGAL.Count
Set oContact = oGAL.Item(i)
If oContact.AddressEntryUserType = 0 Then
Set oUser = oContact.GetExchangeUser
If Len(oUser.lastname) > 0 Then
UserIndex = UserIndex + 1
arrUsers(UserIndex, 1) = oUser.Name
arrUsers(UserIndex, 2) = oUser.PrimarySMTPAddress
End If
End If
Next i
appOL.Quit
If UserIndex > 0 Then
Range("A2").Resize(UserIndex, UBound(arrUsers, 2)).Value = arrUsers
End If
Set appOL = Nothing
Set oGAL = Nothing
Set oContact = Nothing
Set oUser = Nothing
Erase arrUsers
End Sub
所以,我做錯了什麼?
是。你說得對。使用「oContact.AddressEntryUserType = 0或oContact.AddressEntryUserType = 5」,它返回相同的前一個結果+另外的7k個聯繫人。包括我的域名之外的電子郵件。但是我仍然在Outlook中看到GAL中的一些地址,並且它們不會被使用該代碼返回到工作表中。 – MWsan