Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 确保通讯组列表中的联系人同时显示姓名和电子邮件地址_Vba_Outlook_Distribution List - Fatal编程技术网

Vba 确保通讯组列表中的联系人同时显示姓名和电子邮件地址

Vba 确保通讯组列表中的联系人同时显示姓名和电子邮件地址,vba,outlook,distribution-list,Vba,Outlook,Distribution List,如何确保添加到Outlook通讯组列表中的联系人同时显示姓名和电子邮件地址?这些联系人可能不存在于任何其他通讯簿中,只存在于通讯组列表中。目前,它们仅显示为电子邮件地址(在两列中) 下面是我们使用的VBA的大致情况: Do Until RS.EOF //here's where we want to inject RS!FirstName, RS!Surname etc objRecipients.Add RS!Email objRec

如何确保添加到Outlook通讯组列表中的联系人同时显示姓名和电子邮件地址?这些联系人可能不存在于任何其他通讯簿中,只存在于通讯组列表中。目前,它们仅显示为电子邮件地址(在两列中)

下面是我们使用的VBA的大致情况:

    Do Until RS.EOF

        //here's where we want to inject RS!FirstName, RS!Surname etc
        objRecipients.Add RS!Email
        objRecipients.Resolve

        RS.MoveNext
    Loop


    Set objDistList = contactsFolder.Items.Add("IPM.DistList")
    objDistList.DLName = "Whatever"

    objDistList.AddMembers objRecipients
    objDistList.Save

    etc

我认为您必须为每个收件人创建一个ContactItem,以便您可以定义名称。下面是一个例子:

Sub testdistlist()

    Dim oRecips As Recipients
    Dim ciDist As DistListItem
    Dim ci As ContactItem
    Dim mi As MailItem

    Set mi = Application.CreateItem(olMailItem)
    Set oRecips = mi.Recipients

    Set ciDist = Application.CreateItem(olDistributionListItem)

    'replace this with your recordset loop
    Set ci = Application.CreateItem(olContactItem)
    ci.FirstName = "John"
    ci.LastName = "Lennon"
    ci.Email1Address = "jlennon@example.com"
    ci.Save

    oRecips.Add ci.FullName

    Set ci = Application.CreateItem(olContactItem)
    ci.FirstName = "Ringo"
    ci.LastName = "Starr"
    ci.Email1Address = "rstarr@example.com"
    ci.Save

    oRecips.Add ci.FullName
    'end replace

    ciDist.AddMembers oRecips

    ciDist.Save
    ciDist.Display
    mi.Close olDiscard

End Sub

多亏了迪克·库斯莱卡的回答,但他给了我一个想法,有一个更简单的方法

这只是在通讯组列表的条目中使用尖括号。如
中的“Ringo Starr”

这很好用

因此,我最初的示例如下所示:

objRecipients.Add RS!FullName & "<" & RS!Email & ">"
objRecipients.Add RS!全名&“