1

我正在尝试通过 Outlook 2010 VBA 添加多个子分发列表作为父分发列表的成员。

Sue Mosher在网上发布的基本代码(其中 objItem 是子 DL,通过 For/Next 循环发现)是:

Set objRecipient = Application.Session.CreateRecipient(objItem.Subject)
objRecipient.Resolve
objDistributionList.AddMember objRecipient

这是将子 DL 添加为“联系人”,而不是链接到原始子 DL 的成员。
当我打开应该是父 DL 中的子 DL 的成员时,它显示为带有“未知”电子邮件地址的电子邮件联系人。

4

2 回答 2

2

您不能在 Outlook 对象模型中执行此操作。
您可以尝试使用Redemption,它公开RDODistListItem .AddContact 方法 - 它可以让您传递 ContactItem 以及 DistListItem 对象作为参数。

于 2013-01-28T18:11:34.677 回答
0

事实证明,实际上可以在 VBA 中执行此操作,尽管它有点迂回,我无法理解它为什么起作用。

通过将子分发列表添加到邮件项目对象的“收件人”字段,它将邮件项目的收件人解析为分发列表。然后,您可以将这些收件人添加到父分发列表。请注意,这要求子列表仍然单独存在,即。如果子列表被删除,父列表将无法找到它

Sub NestedDistLists()
    Dim outApp As Object
    Dim outMail As Object
    Dim distRecipients As Object
    Dim distListChild As Object
    Dim distListParent As Object

    Set outApp = CreateObject("Outlook.Application")
    Set outMail = outApp.createItem(0)
    Set distListChild = outApp.createItem(7)
    Set distListParent = outApp.createItem(7)
    Set distRecipients = outMail.recipients

    distListChild.dlName = "Test Child"
    distRecipients.Add "john@example.com"
    distRecipients.resolveall
    distListChild.addmembers distRecipients
    distListChild.Save
    outMail.to = distListChild

    distListParent.dlName = "Test Parent"
    distListParent.addmembers distRecipients
    distListParent.Save

    distListParent.display
End Sub
于 2019-04-04T01:14:11.937 回答