HOWTO: VB6/CDO 1.21 - expand a distribution list

Below is a sample:

 

' TODO: Create a new VB Project
' TODO: Set a reference to CDO 1.21
' TODO: Add a button to the form and paste this code in.
' TODO: Change TODO: sections below.

Private Sub Command1_Click()

    Dim objSession As MAPI.Session
    Dim ObjMessage As MAPI.Message
    Dim objUseRecips As MAPI.Recipients
    Dim objRecips As MAPI.Recipients
    Dim objRecip As MAPI.Recipient

    Dim strProfileInfo As String
    Dim sServer As String
    Dim sMailbox As String

    '---------------------- Configure -----------
    sServer = "myemailserver"  ' TODO: Change this to the name of you email server
    sMailbox = "mymailbox"    ' TODO: Change this to the name of your mail box

    strProfileInfo = sServer & vbLf & sMailbox

    ' --------------- Startup a MAPI Session -------------------
    Set objSession = CreateObject("MAPI.Session")
    objSession.Logon , , False, True, 0, True, strProfileInfo

    ' --------------- Create a message object -------------------
    Set ObjMessage = objSession.Outbox.Messages.Add
    Set objUseRecips = ObjMessage.Recipients

    ' ---------------   Get a list of recipients ----------------
    ' Add the users or Distribution lists that you would like to
    ' see free/busy information.
    objUseRecips.Add ("mydistgroup")           ' TODO: add email or distribution list
 
    Set objRecips = ExpandDistList(objSession, objUseRecips)

    ' You can now walk through the expanded recipients collection objRecips
    For Each objRecip In objRecips
       Debug.Print objRecip.Name
    Next

End Sub

'----------------------------------------------------------------------------------------------------------------
' This expands the Distribution List (recipients collection).
'  Input:
'     objSession - CDO 1.21 logged-on session
'     objRecips - unexpanded MAPI.Recipeients Collection
'  Returns: Expanded MAPI.Recipeients collection
'----------------------------------------------------------------------------------------------------------------
Private Function ExpandDistList(objSession As MAPI.Session, objRecips As MAPI.Recipients) As Object
    Const cdoDistList = 1

    'Dim objRecips As MAPI.Recipients
    Dim objRecip As MAPI.Recipient
    Dim objMembers As Object
    Dim objMember As Object

    ' ---------------   Get a list of recipients ----------------
    ' Add the users or Distribution lists that you would like to
 
    For Each objRecip In objRecips
        ' If it is a distribution list, do the following.
        If objRecip.AddressEntry.DisplayType = cdoDistList Then

            ' Get the individual members, and add them.
            Set objMembers = objRecip.AddressEntry.Members
            For Each objMember In objMembers
                objRecips.Add (objMember.Address)
            Next

            ' Remove the distribution list from the recipients' collection.
            objRecip.Delete
        End If
    Next

    objRecips.Resolve
    Set ExpandDistList = objRecips
End Function