Microsoft Outlook troubleshooting

Wyobraźcie sobie wiadomość, z wypełnionymi polami email odbiorców. Zdarzyć się może, że w wiadomości będziemy mieć powielone adresy email, czego chcemy uniknąć, ponieważ pozostawienie ich będzie skutkowało niepożądanym nadaniem wiadomości do tego samego adresata kilkakrotnie.


Rys 1. Przykładowa wiadomość z wielokrotnym osadzeniem adresów email

Eliminacje duplikatów możemy przeprowadzić po przez import ich do Excela, podział na osobne cele, transpozycje i filtrację z usunięciem duplikatów. Uff - trochę męczące prawda?

Jest na to recepta w postaci kodu VBA.

Poniżej załączam kod, jaki można zastosować np. na otwartej/aktywnej wiadomości email po osadzeniu go w środowisku developerskim Outlooka:

Sub eliminuj()
Dim oMail  As MailItem: Set oMail = ActiveInspector.CurrentItem
Call eliminacja_duplikatow(oMail)
End Sub

Private Sub eliminacja_duplikatow(oMail As MailItem)
'MVP OShon from VBATools.pl
With oMail.Recipients
Dim cLista_To As New Collection, cLista_CC As New Collection, cLista_BCC As New Collection
Dim y&, oRecip As Recipient, ile&: ile = .Count
  If ile > 1 Then
    For y = ile To 1 Step -1
     On Error Resume Next
        Select Case .Item(y).Type
          Case 1: cLista_To.Add .Item(y), CStr(.Item(y))
          Case 2: cLista_CC.Add .Item(y), CStr(.Item(y))
          Case 3: cLista_BCC.Add .Item(y), CStr(.Item(y))
        End Select
          .Remove (y)
     On Error GoTo 0
    Next y
    For y = 1 To cLista_To.Count
        Set oRecip = .Add(cLista_To.Item(y))
            oRecip.Type = olTo
    Next y
    For y = 1 To cLista_CC.Count
        Set oRecip = .Add(cLista_CC.Item(y))
            oRecip.Type = olCC
    Next y
    For y = 1 To cLista_BCC.Count
        Set oRecip = .Add(cLista_BCC.Item(y))
            oRecip.Type = olBCC
    Next y
        oRecip.Resolve
  End If
End With
Set oRecip = Nothing
End Sub

Realizację kodu, można przeprowadzić na trzy sposoby:

  1. przez uruchamianie przycisku wstęgi, osadzonej w nowej wiadomości,
  2. jako skrót klawiaturowy [Alt+F8] i wybór z menu procedur,
  3. lub uruchamiać automatycznie podczas wysyłania wiadomości wywołując ją w procedurze zdarzeniowej Application_ItemSend stosując jako reguła.

Efekt odfiltrowania widzimy poniżej:


Rys 2. Wiadomość po uruchomieniu pow. procedury

Teraz, nie będziemy musieli się tłumaczyć dlaczego poczta została dostarczona dwa razy i czym różni się jej treść.

 

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.