
Reguły i skrypty
autor OShon 2010-12-10 16:02:00 w Makra
tagi: reguła, skrypt, automatyzacja, Outlook, tworzenie
0 komenarze | Dodaj komentarz
tagi: reguła, skrypt, automatyzacja, Outlook, tworzenie
0 komenarze | Dodaj komentarz
Jednym z ciekawych rozwiązań automatyzacji Outlooka jest tworzenie reguł. W większości wykorzystywane są one do przenoszenia wiadomości z jednego folderu do innego, np. z folderu „Skrzynka odbiorcza”.
Krokiem dalej będzie przygotowanie takiej reguły, która pozwoli przekazać wiadomość do innej osoby (nieokreślonej w wiadomości), pobrania danych z jej treści i zapisanie np. do pliku zewnętrznego (np. tworzenie logu wiadomości konkretnych odbiorców lub exportu ważnych elementów z jej treści) lub transformacji wiadomości na inny standard.
Poniżej przedstawione procedury, umieszczone w module developera Outlooka (Alt+F11) automatycznie pojawią się na liście skryptów, które to możemy podpiąć do przygotowanych reguł.
Przykład 1.
Jeśli w temacie przychodzącej wiadomości pojawi się słowo „Raport” to deleguj sprawę:
Sub Delegowac_raport(Item As Outlook.MeetingItem)
If InStr(1, Item.Subject, "Raport") > 0 Then
Dim oMailItem As MailItem
oMailItem = Application.CreateItem(olMailItem)
With oMailItem
.To = "Jasio.Kowalski@vbatools.pl"
.Subject = "Wykonaj raport miesięczny"
.Body = "Raport dedykowany dla: " & Item.SenderName
.Send()
End With
oMailItem = Nothing
End
Przykład 2.
Aby pobrać dane z wiadomości i przekazać ją do zmiennej stosujemy taką konstrukcję (zakładając, iż w treści otrzymanej wiadomości po słowie „Email:” jest podany adres przyszłego odbiorcy a następnym słowem w szablonie jest „Phone:”
Sub Przeslij_dalej_maila(ByVal Item As MeetingItem)
Dim dm&, dl&, Mail$
dm = InStr(1, Item.Body, "Email: ")
If dm > 0 Then
dl = InStr(1, Item.Body, "Phone: ")
Mail = Split(Mid$(Item.Body, dm, dl - dm))(1)
If Mail Like "*@*.*" Then Call make_massage(Mail)
End If
End Sub
Sub make_massage(ByVal adresat$)
Dim oMailItem As MailItem
oMailItem = CreateItem(olMailItem)
With oMailItem
.To = adresat
.Subject = "Twój temat"
.Display() 'aby wysłać zmień na .Send
End With
oMailItem = Nothing
End Sub
Przykład 3.
Do przesyłania wiadomości (np. dla wymienionej osoby w regule), która sobie życzy otrzymywać wiadomości w teście niesformatowanym możemy zastosować takie rozwiązanie:
Sub Zamien_na_text(MyMail As MailItem)
Dim MailID$, oMail As MailItem
MailID = MyMail.EntryID
oMail = Session.GetItemFromID(MailID)
oMail.BodyFormat = olFormatPlain
oMail.Save()
oMail = Nothing
End Sub
Samo wiązanie procedury w regule odbywa się następująco:
Rys.1. Przykład reguły dla poczty przychodzącej

Rys.2. Definiowanie warunków reguły

Rys.3. Podpięcie skryptu (lista dostępnych procedur)
Reszta postępowania zgodnie z kreatorem reguł.
Osadzenie procedur VBA znajdziecie w artykule: Instalacja i uruchamianie makr.
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.
