这段代码假设名字在A列中。它进一步假设您要访问的通讯录名称为“联系人”,并且它们按照您的图表格式化。
Option Explicit
Private Sub GetAddresses()
Dim o, AddressList, AddressEntry
Dim c As Range, r As Range, AddressName As String
Set o = CreateObject("Outlook.Application")
Set AddressList = o.Session.AddressLists("Contacts")
'Change this range accordingly
Set r = Range("A1:A25")
For Each c In r
AddressName = c.Value
For Each AddressEntry In AddressList.AddressEntries
If AddressEntry.Name = AddressName Then
c.Offset(0, 1).Value = AddressEntry.Address
Exit For
End If
Next AddressEntry
Next c
End Sub
如果地址在全局地址列表中,在Outlook中,转到工具-->地址簿。然后使用下拉列表来确定地址所在的列表。将代码中的“Contacts”替换为存储地址的地址簿的名称。
我没有写这个,我在Ozgrid上找到它,并修改了一些内容以适应你的情况。可能需要进行一些微调才能适用于您的应用程序。希望这可以帮助您或引导您朝正确的方向发展。
您应该能够在没有任何VBA代码的情况下导入所有联系人。以下是一个描述如何执行此操作的链接。
https://www.ablebits.com/office-addins-blog/2014/06/12/import-contacts-excel-outlook/
https://www.extendoffice.com/documents/outlook/1116-outlook-export-contact-to-excel.html
你可能也对接入GAL感兴趣。请查看下面的链接。