通过用户标识在Outlook中search联系人

我想实现的是通过用户名在Outlook中查找联系人。 以下是我正在使用的代码(使用来自本论坛其他主题的提示):

Sub Lookup_address_book (a as Integer, thissheet as Worksheet, myrange as Range) Dim myoutapp as Object Dim myNameSpace as NameSpace Dim myAddrList as AddressList Dim myAddrEntry as AddressEntry Dim alias as String Dim cell as Range Set myoutapp = CreateObject("Outlook.Appliation") Set myNameSpace = myoutapp.GetNameSpace("MAPI") Set myAddrList = myNameSpace.AddressLists("All Users") With thissheet For Each cell In myrange alias = .Cells(cell.row,a) Set myAddrEntry = myAddrList.AddressEntries(alias) .Cells(cell.row,a+1) = myAddrEntry.Name .Cells(cell.row,a+1) = myAddrEntry.GetExchangeUser.Department Next End With End Sub 

那么,代码的作品,但效果不是我所期望的。 我通过他们的usderID查找人,例如。 d588588这可以表明,比方说,一个美国能源部,约翰。 但是,当我查找一个ID时,Outlook发现我名单上第一个以D开头的人,例如。 丹尼尔斯,乔。 我猜想的是,默认情况下,search只能通过名字来完成,就像截图一样。 通过自己input的ID进行testing,我得到了macros给我的东西。

地址簿

如果我使用更多列选项进行search,我可以find正确的人。 我一直在试图find一种方法,使我的macros看在其他领域,但没有运气。 我已经看遍了所有的OOM,但找不到任何帮助我的东西。

有没有办法使macros查找其他字段中的ID而不是名称,并让我的名字与这个ID的人,而不是名字的人开始与ID相同的字母?

调用Namespace.CreateRecipient / Recipient.Resolve – GAL提供者将能够通过login别名来解决。 一旦您有收件人对象,使用Recipient.Name属性