VBATools

Przeniesienie wiadomości do kosza folderu IMAP z Elementy wysłane

by on Feb.15, 2012, under Outlook, Porady

Tematem tej porady jest potrzeba przeniesienia wiadomości po jej usunięciu z folderu elementy wysłane do folderu skrzynki, z której został on wysłany. Konta IMAP można skonfigurować tak, aby wskazać kierunek poczty przychodzącej oraz utworzyć regułę na skopiowanie wiadomości w obrębie struktury dostępnych folderów. Niestety usunięcie z przeniesieniem nie jest możliwe.

Proces ten nie jest skomplikowany ale wymaga utworzenia programu w VBA. Zaprogramowanie go, będzie opierało się na odrębnej procedurze. Powodem jest fakt iż Outlook nie posiada procedury zdarzeniowej, która by wywoływała czynność po usunięciu obiektu.

OL_Przenies_do_folderu_IMAP0

Rys 1. Opis schematu postępowania w strukturze folderów IMAP (przesłany przez Capacitor).

Poniżej umieszczone makro ma na zadanie przenieść wskazany lub otwarty mail, jednakże wywołanie tej procedury musi być podłączone do odrębnego przycisku. Dzięki mechanizmowi “Dostosowanie wstążki” dostępnego w opcjach Outlooka, jest możliwość dodania przycisku z podpiętym makrem. Samo podpięcie realizuje się po przez wybrania polecenia z grupy “Makra” a następnie w sekcji”Dostosuj wstążkę” utworzyć nową grupę i dopiero do niej dodać kod. Dodatkowo możemy zmienić nazwę wyświetlaną i dodać obrazek ikony.

OL_Przenies_do_folderu_IMAP

Rys 2. Utworzenie skrótu do procedury VBA

OL_Przenies_do_folderu_IMAP2

Rys 3. Dostosowanie widoku

Sub Przenies_do_kosza_konta_imap()
'MVP OShon from VBATools.pl
Dim oMail  As MailItem, oFolder As MAPIFolder
On Error GoTo blad
Select Case TypeName(Application.ActiveWindow)
Case "Explorer":  Set oMail = ActiveExplorer.Selection.Item(1)
Case "Inspector": Set oMail = ActiveInspector.CurrentItem
Case Else: Exit Sub
End Select
 Dim konto As String: konto = oMail.SendUsingAccount
 Set oFolder = Application.GetNamespace("MAPI").Folders(konto).Folders("Deleted Items")
 oMail.Move oFolder
koniec:
 If Not oFolder Is Nothing Then Set oFolder = Nothing
 If Not oMail Is Nothing Then Set oMail = Nothing
Exit Sub
blad:
MsgBox Err.Number & " " & Err.Description, vbExclamation, "VBATools.pl"
Resume koniec
End Sub

Podobnie modyfikuje się wstążkę dla otwartej wiadomości.

 

(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