2017-04-19 58 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再次嘗試。 –