Microsoft Outlook troubleshooting

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ę procedura, 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.

Pobranie adresów z listy w wersji 2007/10

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 adresat wiadomości (Rys 2.).

Sub Wyslij_osobno()
 'MVP Oskar Shon - VBATools
 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"

 On Error GoTo koniec
 Dim oMail  As MailItem: Set oMail = ActiveInspector.CurrentItem
 If Len(oMail.BCC) > 0 Or Len(oMail.CC) > 0 Then _
    oMail.To = oMail.To & ";" & oMail.CC & ";" & oMail.BCC

 Dim odbiorcy$, 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 = ""
    odbiorcy = .item(x) & ";" & odbiorcy
    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
   odbiorcy = .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: " & odbiorcy, vbInformation, ja

 Set newMail = Nothing
 Set oMail = Nothing
Exit Sub

'--obsługa błędu
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. Można go wzbogacić o pasek postępu, tak aby mieć kontrolę nad realizacją wysyłki.

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

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

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.

MVP Shon Oskar – VBATools.pl
Jeśli masz pytania dot. tego artykułu zapraszam na Forum
Skonfiguruj swój pakiet dodatków do Excela, Worda, PowerPointa i Outlooka



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