VBA Tools

Tworzenie listy dystrybucyjnej dla podanych adresów email

napisane przez Oskar w dniu wtorek, 22 Czerwiec, 2010, w kategorii Porady - Outlook

Microsoft Outlook nie posiada mechanizmu, dzięki któremu możemy wkleić kilka adresów email osadzonych w pamięci, z których byłaby utworzona lista dystrybucyjna. Zwykle proces ten jest realizowany adres po adresie w kreatorze listy, poprzez wybranie adresata lub wpisanie pojedynczego adresu.

Poniższa procedura po wklejeniu co najmniej dwóch adresów email oddzielonych znakiem „;” w wyświetlonym oknie i podaniu nazwy listy dystrybucyjnej utworzy ją, a następnie wyświetli ją na ekranie użytkownika.

Option Explicit
Sub Tworzenie_list_dystrybucyjnych()
'MVP OShon from VBATools.pl
Dim Message$, nazwa_listy$, Adresy$, x&

Message = "Wklej adresy Email rozdzielnone znakiem '';''"
Adresy = Trim(InputBox(Message, " Tworzenie listy dystrybucyjnej"))

If Len(Adresy) > 0 Then
On Error GoTo blad
 If InStr(1, Adresy, ";") > 0 Then

 Message = "Podaj nazwę dla zakładanej listy dystrybucyjnej." & vbCr _
 & "Wszystkie poprawne adresy zostaną podłączone do tej grupy."
 nazwa_listy = Trim(InputBox(Message, " Tworzenie listy dystrybucyjnej"))
 nazwa_listy = Replace(nazwa_listy, ";", " ")
 nazwa_listy = Replace(nazwa_listy, "(", vbNullString)
 nazwa_listy = Replace(nazwa_listy, ")", vbNullString)

 If Len(nazwa_listy) = 0 Then GoTo nie_podano_nazwy

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

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

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

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

 oRecipients.ResolveAll

 If x > 0 Then
 With oDistList
 .AddMembers oRecipients
 .Save '<-jeśli chcesz zapisać
 .Display 0 '<-jeśli chcesz wyświetlić
 End With
 Else
 oDistList.Delete
 End If

 Set oDistList = Nothing
 Set oMailItem = Nothing
 Set oRecipients = Nothing
 Else
brak_conajmniej_2:
 MsgBox "Lista dystrybucyjna nie została utworzona." & vbCr _
 & "Aby utworzyć Listę dystrybucyjną należy podać wkleić" & vbCr _
 & "conajmniej 2 adresy rozdzielone znakiem '';''.", vbExclamation, " Informacja o błędzie"
 End If
Else
GoTo brak_conajmniej_2
End If
Exit Sub

nie_podano_nazwy:
 MsgBox "Lista dystrybucyjna nie została utworzona." & vbCr _
 & "Aby utworzyć Listę dystrybucyjną należy" & vbCr _
 & "podać nazwe dla grupy odbiorców.", vbExclamation, " Informacja o błędzie"
Exit Sub

blad:
 MsgBox "Błąd procedury: ''Tworzenie_list_dystrybucyjnych''" & vbCr _
 & Err.Number & vbCr _
 & Err.Description, vbExclamation, " Informacja o błędzie"

End Sub

Aby osadzić procedurę „Tworzenie_list_dystrybucyjnych” pod przyciskiem w menu MS Outlook, polecam uwadze ten artykuł.

Postępowanie krokowe w makro:

  • sprawdza, czy jest wpisane co najmniej 2 pozycje rozdzielone znakiem „;”
  • tworzy listę dystrybucyjną o nazwie, jaka została podana w InputBoxie
  • sprawdza czy podany adres zawiera znak małpy oraz co najmniej 1 kropkę
  • dodaje adresy do utworzonej wcześniej listy dystrybucyjnej i zapisuje zmiany
  • pokazuje efekt końcowy, otwierając listę dystrybucyjną (można wyłączyć)

Podobna procedura „zrob_liste_dla_zaznaczonych_wiadomosci” dostępna jest tutaj.

Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.

Podziel się ze znajomymi:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Blip
  • Grono
  • Gwar
  • Kciuk.pl
  • LinkedIn
  • MySpace
  • OSnews.pl
  • Śledzik
  • Spis.pl
  • Technorati
  • Twitter
  • Vala.pl
  • Wahacz.pl
  • Wykop

Wpisz swój komentarz:

Comment Spam Protection by WP-SpamFree