Outlook VBA:将通讯组列表项添加到通讯组列表

时间:2013-01-24 00:09:17

标签: vba outlook distribution-list

我正在尝试通过Outlook中的VBA将多个子通讯组列表添加为父通讯组列表的成员。我正在使用Outlook 2010。

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

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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

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