Microsoft Outlook troubleshooting
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 MailItem)
    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(Item As MailItem)
    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:
 
Przykład dla poczty przychodzącej 
Rys.1. Przykład reguły dla poczty przychodzącej
 
Dla każdej poczty, bez podania konkretnego adresata wiadomości
 Rys.2. Definiowanie warunków reguły
 
Podepnij skrypt (lista dostępnych procedur)
 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.

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.

Komentarze

Komentarze
Jerzy Urynek
Jerzy Urynek, MODR Warszawa 2013-05-16 06:30:24
Nadal nie mogę utworzyć reguły która by powodowała odpowiedź na przychodzący e-mail bez tytułu np: "Pocztę bez tematu traktuję jak śmieć i usuwam automatycznie" tak jak mam ustawione "Dziękuję, jak przeczytam to odpowiem" Z góry dziękuję za szybką pomoc bo strasznie mnie męczą takie puste tematy w poczcie
OShon
OShon, VBATools.pl 2014-01-14 09:27:11
Należy w kodzie sprawdzić czy trmat posiada jakieś znaki. if len(MyMail.subject)= 0 then 'i tutaj komunikat czy zwrot wartości przełącznika
wyświetleń: 8806