gpt4 book ai didi

excel - 解析 Outlook 收件人时选择多个条目中的第一个条目

转载 作者:行者123 更新时间:2023-12-02 06:44:47 25 4
gpt4 key购买 nike

我有一个函数,它接受一个名称并在 Outlook 中解析它以返回所选名称的别名。本地址簿中所选名称有多个条目时,此操作会失败。例如“史密斯,鲍勃”和“史密斯,鲍勃 X”。如果我尝试解析的名称是“Smith,Bob X”,则代码可以正常工作,但普通的“Smith,Bob”会失败。

我推测当找到多个条目时,Outlook 会打开“检查名称”对话框(当我手动解析名称时会发生这种情况)。

当我的代码找到多个条目时,如何选择第一个条目?

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)的内容表创建 PR_ANR 限制。这就是 Outlook 在解析您在“收件人”编辑框中键入的名称时所做的事情 - 它会遍历搜索路径中的所有容器并应用 PR_ANR 限制。如果找到多个匹配项,则会显示一个包含列表的对话框。如果存在单个匹配项,则返回该匹配项并停止搜索,否则继续搜索搜索路径中的下一个容器。

但是,Outlook 对象模型不公开此功能。如果使用 Redemption (我是它的作者 - 任何语言)是一个选项,它公开 RDOAddressBook .ResolveNameExRDOAddressList .ResolveNameEx,返回匹配列表。

  set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set AdrrEntries = Session.AddressBook.ResolveNameEx("john")
Debug.Print AdrrEntries.Count & " names were returned by ResolveNameEx:"
Debug.Print "------------"
for each AE in AdrrEntries
Debug.Print AE.Name
next
Debug.Print "------------"

关于excel - 解析 Outlook 收件人时选择多个条目中的第一个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35220485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com