Microsoft Outlook does not have a feature that allows you to paste multiple e-mail addresses from the clipboard and make a distribution list. Usually, this process is done by manually writing one address after another in the distribution list editor or by choosing the individual recipients. 

In this procedure after you paste at least two addresses separated with a semi-colon (";") in the window and provide a name, a new distribution list will be created and displayed on the screen. 
Sub Creating_Distribution_Lists()         
Dim Message$, Name_of_the_list$, Addresses$, x&
Message = "Paste e-mail addresses separated by '';''"
Addresses = Trim(InputBox(Message, "Creating Distribution Lists"))
If Len(Addresses) > 0 Then
On Error GoTo error
If InStr(1, Addresses, ";") > 0 Then

Message = "Provide a name for the new Distribution List." & vbCr _
& "All correct addresses will be included in the list."
Name_of_the_list = Trim(InputBox(Message, "Creating Distribution Lists "))
Name_of_the_list = Replace(Name_of_the_list, ";", " ")
Name_of_the_list = Replace(Name_of_the_list, "(", vbNullString)
Name_of_the_list = Replace(Name_of_the_list, ")", vbNullString)

If Len(Name_of_the_list) = 0 Then GoTo no_name_given

Dim oContactFolder As MAPIFolder
Dim oDistList As DistListItem
Dim oMailItem As MailItem
Dim oRecipients As Recipients
Dim oRecipient As Recipient

oContactFolder = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
oDistList = oContactFolder.Items.Add(olDistributionListItem)
With oDistList
.DLName = Name_of_the_list
End With

oDistList = oContactFolder.Items(Name_of_the_list)
oMailItem = Application.CreateItem(olMailItem)
oRecipients = oMailItem.Recipients

Dim temp() As String, abc&
abc = 0
temp() = Split(Left$(Addresses, Len(Addresses) - 1), ";")
While (abc <= UBound(temp()))
If temp(abc) Like "*@*.*" Then
x = x + 1
End If
abc = abc + 1
End While


If x > 0 Then
With oDistList
.Save() '<-if you want to save
.Display(0) '<-If you want to display
End With
End If

oDistList = Nothing
oMailItem = Nothing
oRecipients = Nothing
MsgBox("Distribution List has not been created." & vbCr _
& "To create a Distribution List you need to paste " & vbCr _
& "at least 2 e-mail addresses separated with '';''.", vbExclamation, " Information about error ")
End If
GoTo lack_of_at_least_2
End If
Exit Sub
MsgBox("Distribution List has not been created." & vbCr _
& "To create a Distribution List you need to" & vbCr _
& "give a name for the group of recipients.", vbExclamation, " information about error ")
Exit Sub
MsgBox("Procedure error: ''Creating_Distribution_Lists''" & vbCr _
& Err.Number & vbCr _
& Err.Description, vbExclamation, "Information about error ")
End Sub
If you want to have the Creating_Distribution_Lists procedure on the Outlook toolbar, please read this article.
The macro is responsible for:
  • checking if at least 2 items are given and separated by the semi-colon ";"
  • creating a distribution list with a name given in the InputBox
  • checking if the given address has "@" symbol and at least one full stop "."
  • adding the addresses to the previously created distribution list and saving the changes 
  • displaying the results by opening the distribution list (may be disabled)

Original article published at this page

See Also