2017-04-19 90 views
1

有没有办法搜索Outlook地址框中的联系人使用他们的电子邮件地址没有任何For循环?我们的全球联系人列表中有这么多联系人,并且需要永久性地查看列表。是否没有可应用于联系人列表的搜索或查找功能?Outlook地址簿搜索(没有循环?)

我正在寻找像用户的电话号码和办公室信息,如果他们在联系人列表中找到。

我发现的所有解决方案都涉及循环联系人列表。 http://www.ozgrid.com/forum/showthread.php?t=76588

https://msdn.microsoft.com/en-us/library/office/ff869721.aspx

回答

0

使用Namespace.CreateRecipient/Recipient.Resolve解决地址簿的名称(或地址)。即使您通过SMTP地址,它也会被解析为GAL用户(如果有匹配的话)。

+0

德米特里,我想我错过了把它放在原来的问题。我有用户的电子邮件,我想在地址簿中找到它。然后获取信息,如电话号码和办公室(更新主要职位)。不知道我是否可以提取outlook.recipient名称以外的信息。 –

+0

当然你可以 - 使用Recipient.AddressEntry。从那里您可以使用AddressEntry.GetExchangeUser或AddressEntry.PropertyAccessor.GetProperty来读取任何MAPI属性(使用OutlookSpy查看可用内容)。 –

+0

谢谢。这太棒了。这应该适用于我所需要的。一旦我完成它,将会发布代码。 –

0

这是我用来从全球地址簿中使用电子邮件地址获取联系人电话号码的解决方案 - 使用Dmitry Streblechenko方法。

Sub GetPhone(EmailAddress As String) 'Gets the phone # for contact 
Dim OutApp As Outlook.Application 
Dim OutMail As Object 
Dim OutRecipients As Outlook.Recipient 
Dim PhoNe As String 


On Error Resume Next 
Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(0) 

Set OutRecipients = OutMail.Recipients.Add(EmailAddress) 
OutRecipients.Resolve 

PhoNe = OutRecipients.AddressEntry.GetExchangeUser.BusinessTelephoneNumber 
Set OutRecipients = Nothing 
Set OutMail = Nothing 
Set OutApp = Nothing 
On Error GoTo 0 
End Sub 
+0

绝对没有理由创建一个虚拟电子邮件。使用Namespace.CreateRecipient/Recipient.Resolve。 –

+0

尝试使用Namespace.CreateRecipient,但遇到了一个错误,我没有时间去娱乐它。我需要一个真正快速的功能宏。我之前用电子邮件解决了收件人问题,所以这就是我走这条路线的原因。当我有机会时,我会用Namespace.CreateRecipient再次尝试。 –