将联系人添加到Outlook通讯组列表 [英] Add contacts to Outlook Distribution List

查看:377
本文介绍了将联系人添加到Outlook通讯组列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有1000多个联系人,每个联系人都有一些常见的职务.我想以编程方式将每个职务组(例如,所有具有职务"Managing Director"的联系人)添加到通讯组列表(例如"Managing Directors")中.

I have 1000+ contacts each with a selection of common job titles. I'd like to programmatically add each job title group (e.g. all the contacts with the job title 'Managing Director') into a Distribution List (e.g. 'Managing Directors').

推荐答案

好,这是仅默认联系人文件夹的示例.同样,您必须转到可能存在DL的每个文件夹,从默认的Contacts文件夹开始,以检查Dist List是否存在,然后再创建它.

Ok here is an example for only the default Contacts folder. Similarly, you have to go to every folder where a DL might exist, starting with the default Contacts folder to check if the Dist List exists before creating it.

经过测试(在VBA中)

Option Explicit

Sub GetJobList()
    Dim olApp As Outlook.Application
    Dim olNmspc As Outlook.NameSpace
    Dim olAdLst As Outlook.AddressList
    Dim olAdLstEntry As Outlook.AddressEntry
    Dim olDLst As Outlook.DistListItem, olDLstItem As Outlook.DistListItem
    Dim olMailItem As Outlook.MailItem
    Dim olRecipients As Outlook.Recipients

    Dim jobT() As String, JobTitle As String
    Dim i As Long

    Set olApp = New Outlook.Application
    Set olNmspc = olApp.GetNamespace("MAPI")

    i = 0

    '~~> Loop through the address entries
    For Each olAdLst In olNmspc.AddressLists
        Select Case UCase(olAdLst.Name)
            Case "CONTACTS"
                '~~> Get the Job Title
                For Each olAdLstEntry In olAdLst.AddressEntries
                    On Error Resume Next
                    JobTitle = Trim(olAdLstEntry.GetContact.JobTitle)
                    On Error GoTo 0

                    If JobTitle <> "" Then
                        ReDim Preserve jobT(i)
                        jobT(i) = olAdLstEntry.GetContact.JobTitle
                        i = i + 1
                    End If
                Next
        End Select
    Next

    '~~> Loop through the job title to create the distribution lists
    For i = LBound(jobT) To UBound(jobT)
        '~~> Check if the DL List exists
        On Error Resume Next
        Set olDLst = olNmspc.GetDefaultFolder(olFolderContacts).Items(jobT(i))
        On Error GoTo 0

        '~~> If not then create it
        If olDLst Is Nothing Then
            Set olDLst = olApp.CreateItem(7)
            olDLst.DLName = jobT(i)
            olDLst.Save
        End If
    Next i

    '~~> Loop through the address entries to add contact to relevant Distribution list
    For Each olAdLst In olNmspc.AddressLists
        Select Case UCase(olAdLst.Name)
            Case "CONTACTS"
                '~~> Get the Job Title
                For Each olAdLstEntry In olAdLst.AddressEntries
                    On Error Resume Next
                    JobTitle = Trim(olAdLstEntry.GetContact.JobTitle)
                    On Error GoTo 0

                    If JobTitle <> "" Then
                        On Error Resume Next
                        Set olDLst = olNmspc.GetDefaultFolder(olFolderContacts).Items(JobTitle)
                        On Error GoTo 0

                        '~~> Create a mail item
                        Set olMailItem = olApp.CreateItem(0)
                        Set olRecipients = olMailItem.Recipients
                        olRecipients.Add olAdLstEntry.GetContact.Email1Address

                        '~~> Add to distribution list
                        With olDLst
                            .AddMembers olRecipients
                            .Close olSave
                        End With

                        Set olMailItem = Nothing
                        Set olRecipients = Nothing
                    End If
                Next
        End Select
    Next

    Set olNmspc = Nothing
    Set olApp = Nothing
    Set olDLst = Nothing

End Sub

这篇关于将联系人添加到Outlook通讯组列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆