VBA Tools

Wysyłanie osobnych wiadomości do adresatów bez „undisclosed recipients”

napisane przez Oskar w dniu środa, 4 Styczeń, 2012, w kategorii Porady - Outlook

Czy nie spotkaliście się z potrzebą adresowania wiadomości osobno. Opcja UDW (ukryte do wiadomości) nie jest wystarczająca, ponieważ odbiorca otrzymuje komunikat: undisclosed-recipients co dyskredytuje was w jego oczach jako twórcę wiadomości kierowanej tylko do jednego odbiorcy (czyli do niego). Między innymi tym można odróżnić Spam od wiadomości dla konkretnego odbiorcy.

Jest na to rada. Poniżej znajduje się procedurę, która wyśle przygotowaną wiadomość do wszystkich odbiorców pojedynczo.

Procedura nie uwzględnia wiadomości, które posiadają w miejscu adresu: listy dystrybucyjnej. Aby przekształcić taką wiadomość należy kliknąć plusik (>= 2007) aby pobrać adresy z listy.

Rys 1. Pobranie adresów z listy w wersji 2007/10

Następnie wywołać poniższą procedurę. Czas realizacji dystrybucji jest wprost proporcjonalny do ilości osób oraz załączników wiadomości. Adresy znajdujące się w polach DW i UDW zostaną przeniesione do pola DO jako jedyny nadawca wiadomości.

Sub Wyslij_osobno()
 'MVP OShon from VBATools.pl
 Const nie$ = "Wiadomość zawiera listę dystrybucyjną." & vbCr & _
              "Wysyłanie zostało przerwane!"
 Const otrzymana$ = "Uruchom procedurę na gotowej do wysłania wiadomości!"
 Const ja$ = "VBATools.pl"

 On Error GoTo koniec
 Dim oMail  As MailItem: Set oMail = ActiveInspector.CurrentItem 
 Dim jacy$, x&, newMail As MailItem
 With oMail.Recipients
 Dim ile&: ile = .Count
  If ile > 1 Then
   For x = ile To 1 Step -1
   DoEvents
    If .item(x).DisplayType = 5 Then GoTo blad
    Set newMail = oMail.Copy
    newMail.To = .item(x): newMail.CC = "": newMail.BCC = ""
    jacy = .item(x) & ";" & jacy
    newMail.Send 'Display '<-jeśli chcesz zobaczyć przed wysłaniem
    .Remove (x)
   Next x
    oMail.Delete
  Elseif ile = 1 Then
   If .item(1).DisplayType = 5 Then GoTo blad
   jacy = .item(1)
   oMail.Send
  Else
   oMail.Display: MsgBox "Brak adresów!", vbExclamation, ja: Exit Sub
  End If
 End With
 MsgBox "Wygenerowano: " & ile & " wiadomości." & vbCr & _
        "Adresaci: " & jacy, vbInformation, ja

 Set newMail = Nothing
 Set oMail = Nothing
Exit Sub

koniec:
 Select Case Err.Number
  Case 91:   MsgBox otrzymana, vbExclamation, ja
  Case Else: MsgBox Err.Number & " " & Err.Description, vbExclamation, ja
 End Select
Exit Sub

blad:
 MsgBox nie, vbExclamation, ja
 If Val(Application.Version) >= 12 Then _
 MsgBox "Możesz przy liście dystrybucyjnej plusikiem pobrać adresy z listy " & _
        "do pola adresu i ponowić proces nadawania wywołując ponownie procedurę VBA.", _
        vbInformation, ja
End Sub

Kod powinien znaleźć się w module pliku .OTM i być wywoływany skrótem klawiszowym [Alt+F8] lub dzięki podłączonemu przyciskowi umieszczonego w pasku szybkiego dostępu szablonu nowej wiadomości.

Aby sprawnie korzystać z tej dogodności można dodać procedurę do przycisku dla nowej wiadomości:

Rys 2. Dodanie procedury jako przycisk w menu (nadanie wyglądu i nazwy grupy i przycisku) wg OL 2010

Rys 3. Wygląd przycisku podłączonej procedury

Można go wzbogacić o pasek postępu, tak aby mieć kontrolę nad realizacją wysyłki.

Rys 4. Generowanie wiadomości pojedynczo (i wysłanie ich)

 

Kod można rozszerzyć o dodanie adresatów wiadomości do treści maila, w przypadku kiedy Massmail będzie nadawał wiadomość do adresata wcześniej osadzonego w polu DW.

W tym celu dodajemy dodatkowe linie:

  • pod deklaracją odliczania (Dim Ile&: Ile = .Count):
        Dim adresy_DW$: adresy_DW = oMail.CC

 

  • a w pętli przed wysłaniem (newMail.Send):
        If InStr(1, newMail.To, adresy_DW) > 0 And Len(adresy_DW) > 0 Then
          If newMail.HTMLBody <> "" Then
            newMail.HTMLBody = newMail.HTMLBody & _
            "<br><br><b>Adresy na jakich nadano wiadomość:</b><br>" & jacy
          Else
            newMail.Body = newMail.Body & vbCrLf & vbCrLf & _
            "Adresy na jakich nadano wiadomość:" & vbCrLf & jacy
          End If
        End If

Inspiracje podał golly

Innym sposobem na wysłanie wiadomości pojedynczo jest zastosowanie korespondencji seryjnej, narzędzia dostępnego z poziomu MS Word lub zastosowania dodatku do spersonalizowanej wysyłki wiadomości: Generatora maili z indywidualnymi załącznikami dla zdefiniowanych odbiorców.

(c) Shon Oskar – www.VBATools.pl

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