Outlook VBA: добавление элемента списка рассылки в список рассылки

Я пытаюсь добавить несколько дочерних списков рассылки в качестве членов родительского списка рассылки через VBA в Outlook. Я использую Outlook 2010.

Основной код, который Сью Мошер опубликовала в сети (где objItem - дочерний DL, обнаруженный с помощью цикла For/Next):

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

Однако это приводит к добавлению дочернего DL в качестве "контакта", а не члена, связывающегося с исходным дочерним DL (т. Е. Когда я открываю элемент (который должен быть дочерним DL) в родительском DL, он появляется как контакт электронной почты с "НЕИЗВЕСТНЫМ" адресом электронной почты).

Есть идеи?

1 ответ

Решение

Вы не можете сделать это в объектной модели Outlook.
Вы можете попробовать использовать Redemption, который предоставляет метод RDODistListItem.AddContact - он позволит вам передать ContactItem, а также объект DistListItem в качестве параметра.

Оказывается, на самом деле это возможно сделать в VBA, хотя это немного окольным путем, и я не могу понять, почему это работает.

Добавляя дочерний список рассылки в поле "to" объекта Mail Item, он разрешает получателей Mail Item в список рассылки. Затем вы можете добавить этих получателей в родительский список рассылки. Обратите внимание, что для этого требуется, чтобы дочерний список по-прежнему существовал отдельно, т.е. если дочерний список удален, родительский список не сможет его найти

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
Другие вопросы по тегам