如何从Outlook联系人获取列中列出的名称的电子邮件地址?

时间:2017-08-05 01:05:48

标签: vba excel-vba email outlook outlook-vba

我是VBA的新手,我需要帮助做一些事情:

如下图所示,我有一个名单。我想要做的是根据他们在A列中的名字,从Outlook联系人列表中检索他们的电子邮件地址(电子邮件地址分散在不同的联系人文件夹中)并将其粘贴到B列中。

或者,是否可以从Outlook联系人那里获取电子邮件地址,为每个名称自动发送电子邮件给Outlook,以便我可以删除B列。

enter image description here

2 个答案:

答案 0 :(得分:3)

此代码假定名称位于A列中。它还假设您正在使用的地址簿名称被命名为“Contacts”,并且它们根据您的图表进行格式化。

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中转到工具 - >地址簿。然后使用下拉列表确定您的地址所在的列表。将代码中的“联系人”替换为存储地址的地址簿的名称。

我没有写这个,我在Ozgrid找到它并修改了一些适合你情况的东西。您的应用程序可能需要稍微调整一下。希望这有助于或帮助您朝着正确的方向前进。

答案 1 :(得分:-1)

您应该能够只导入所有联系人,而无需任何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。看看下面的链接。

http://www.cumc.columbia.edu/it/howto/email/gal.html