VBATools

Cykliczne wysyłanie wiadomości z załącznikiem

by on Oct.26, 2011, under Outlook, Porady

Do jednego z obowiązków pracownika administracyjnego należy generowanie raportów i wysyłanie ich mailem do przełożonych, czy osób mających wpływ na generowanie wartości raportu.

Nierzadko też jest, iż pliki raportów są generowane przez automaty, skrypty czy modyfikowane przez osoby trzecie, jednakże ich nadanie jest determinowane datą ich wysyłki.

Poniżej podaje procedurę, w której zadeklarowane są daty wysyłki wiadomości. Mogą one być obliczane (co tydzień/miesiąc itp. od podanej daty), pobrane z pliku TXT/XML/XLS lub wpisane na stałe jak w poniższym kodzie.

Procedurę zdarzeniową umieszczamy w klasie ThisOutlookSession pliku VBAProject.OTM, do którego dostęp mamy po naciśnięciu skrótu klawiszowego [Alt+F11]. Po jej umieszczeniu dobrze jest zapisać instrukcje [Ctrl+S], zamknąć developera i zresetować aplikacje MS Outlook.

Private Sub Application_Startup()
'MVP OShon from VBATools.pl 
Dim oMail As MailItem, x&
Dim daty() As String
'daty można pobrać z pliku TXT, Tabeli XLS, wyliczyć (np co drugi piątek) lub wpisać na sztywno j.n.
daty = Split("2011-09-13;2011-10-10;2011-10-26;2011-11-01", ";")
For x = 0 To UBound(daty)
 If Format(Now, "YYYY-MM-DD") = daty(x) Then
 Set oMail = Application.CreateItem(olMailItem)
 With oMail
 .To = "adres@vbatools.pl"
 .Attachments.Add "c:\temp\VS2010_PLK_Fail.png"
 .Subject = "Cykliczny raport .."
 .Body = "Pozdrowienia od Willy'ego"
 .Send 'aby sprawdzić przed wysłaniem należy zamienić na .Display
 End With
 Set oMail = Nothing
 Exit For
 End If
Next x
Set oMail = Nothing
End Sub

Kod można rozszerzyć lub sparametryzować, tak aby realizował on wysyłkę kilku wiadomości, z różnymi załącznikami, do różnych osób w różnych dniach.

Wymogiem koniecznym prawidłowego funkcjonowania, jest cykliczne uruchamianie MS Outlooka, ponieważ kod nie opera się na żadnej “kontrolce zegarowej” to też emisja wiadomości jest generowana w momencie jego uruchamiania.

Procedura jest odpowiedzią na możliwości dodatków, mechanizmów serwerowych (Exchange/PowerShell) w realiach pracy indywidualnej bez dostępu do wymienionych mechanizmów.

Działanie też można zautomatyzować bez udziału Office, opierając się jedynie na Task Schedulerze albo definiując maila wprost, albo po przez cyklicznie wywołanie batfile.

 

(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.
:, , , , , ,

Leave a Reply