Excel 解析Outlook收件人时选择多个条目中的第一个条目
我有一个函数,它接受一个名称并在Outlook中解析该名称,以返回所选名称的别名。当通讯簿中的选定名称有多个条目时,此操作失败。e、 g.“史密斯,鲍勃”和“史密斯,鲍勃X”。如果我试图解析的名称是“Smith,Bob X”,那么代码工作正常,但简单的“Smith,Bob”失败 我假设在找到多个条目时,Outlook会打开“检查名称”对话框(当我手动解析名称时会出现这种情况) 当我的代码找到多个条目时,如何选择第一个条目Excel 解析Outlook收件人时选择多个条目中的第一个条目,excel,vba,outlook,Excel,Vba,Outlook,我有一个函数,它接受一个名称并在Outlook中解析该名称,以返回所选名称的别名。当通讯簿中的选定名称有多个条目时,此操作失败。e、 g.“史密斯,鲍勃”和“史密斯,鲍勃X”。如果我试图解析的名称是“Smith,Bob X”,那么代码工作正常,但简单的“Smith,Bob”失败 我假设在找到多个条目时,Outlook会打开“检查名称”对话框(当我手动解析名称时会出现这种情况) 当我的代码找到多个条目时,如何选择第一个条目 Function GETTPX(ByVal UserName As Str
Function GETTPX(ByVal UserName As String) As String
Dim objOL As Object
Dim oRecip As Outlook.Recipient
Dim oEU As Outlook.ExchangeUser
Dim oEDL As Outlook.ExchangeDistributionList
Set objOL = CreateObject("Outlook.Application")
Set oRecip = objOL.Session.CreateRecipient(UserName)
oRecip.Resolve
If oRecip.Resolved Then
Set oEU = oRecip.AddressEntry.GetExchangeUser
End If
GETTPX = oEU.Alias
Set oRecip = Nothing
Set objOL = Nothing
End Function
在扩展MAPI级别(仅限C++或Delphi)上,您可以对特定搜索容器(如GAL)的内容表创建PRU ANR限制。当Outlook解析您在“收件人”编辑框中键入的名称时,它会遍历搜索路径中的所有容器并应用PR_ANR限制。如果找到多个匹配项,它将显示一个包含列表的对话框。如果存在单个匹配项,则返回该匹配项并停止搜索,否则将继续搜索路径中的下一个容器 但是,Outlook对象模型不公开此功能。如果使用(任何语言)是一个选项,它将公开.resolvenamex和.resolvenamex,这将返回匹配项列表
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set AdrrEntries = Session.AddressBook.ResolveNameEx("john")
Debug.Print AdrrEntries.Count & " names were retruned by ResolveNameEx:"
Debug.Print "------------"
for each AE in AdrrEntries
Debug.Print AE.Name
next
Debug.Print "------------"
我使用的是一台工作电脑,所以下载任何东西恐怕都不是一个选择。所以我想这不是我用VBA就能做到的?