VBA Tools

Dodawanie statusu wiadomości lub notatki do e-maila w Outlook’u

napisane przez Oskar w dniu poniedziałek, 21 Czerwiec, 2010, w kategorii Porady - Outlook

Wiele z osób posiada konieczność opisania lub oznaczenia wiadomości przychodzących. Weryfikacja na podstawie historii odpowiedzi na wiadomość jest uciążliwa, zwłaszcza że przesyłana treść może być wielowątkowa i zwykle umieszczona jest w folderze „Poczta wysłana”, a nie w miejscu poczty przychodzącej (często prze kserowana do podfolderu), gdzie chcielibyśmy je oznaczać.

Status taki powinien być widoczny, z możliwością sortowania, w przypadku notatki również i wyszukania informacji po jej treści.

Poniżej przedstawiam dwa warianty makra, które pozwolą na ustawianie statusu na wiadomościach pocztowych (wariant Status) albo na szybkie dodawanie notatki, tj. dodatkowego dowolnego tekstu do wiadomości (wariant Notatka).

Aby osadzić procedurę „Dodaj_status_notatke” pod przyciskiem w menu MS Outlook, polecam uwadze artykuł.

Status

Poniższe makro pozwala na dodawanie pola status do wiadomości pocztowych.

Status posiada dwa rodzaje wypełnienia pola Tak, Nie lub brak wypełnienia. Wywołane jest komunikatem z trzema przyciskami. Przycisk Anuluj usuwa wcześniej wybrany wpis.

Option Explicit
'MVP OShon from VBATools.pl
Dim oApp As New Outlook.Application
Dim oExp As Outlook.Explorer
Dim oSel As Outlook.Selection
Dim oItem As Object, i&
Dim strMessageClass As String
Dim oMailItem As Outlook.MailItem
Dim oProperty As UserProperty
Dim Tematy$

Sub Dodaj_status_notatke()
 Set oExp = oApp.ActiveExplorer
 Set oSel = oExp.Selection

 If oSel.Count > 1 Then
 For i = 1 To oSel.Count
 Set oItem = oSel.item(i)
 AddNoteInfo oItem
 Next i
 Else
 Set oItem = oSel.item("Status")
 AddNoteInfo oItem
 End If

 Set oExp = Nothing
 Set oSel = Nothing
 Set oItem = Nothing
End Sub

Private Sub AddNoteInfo(oItem As Object)
 strMessageClass = oItem.MessageClass

 If (strMessageClass = "IPM.Note") Then
 Set oMailItem = oItem
 Tematy = oMailItem.Subject
 On Error Resume Next
 oProperty = oItem.UserProperties("Status")
 On Error GoTo 0
 If oProperty Is Nothing Then _
 oItem = oMailItem.UserProperties.Add("Status", olText)

Dim Pytanie, Odpowiedz
Pytanie = MsgBox("Wstaw wartośc do prowadzenia" & vbCr & vbCr _
 & "Tak / Nie / Anuluj" & vbCr _
 & "Gdzie ''Anuluj'' usunie wpis statusu.", _
 vbYesNoCancel + vbInformation + vbDefaultButton1, _
 "Status | VBATools.pl")
If Pytanie = vbYes Then
 oMailItem.UserProperties.item("Status").value = "Tak"
ElseIf Pytanie = vbNo Then
 oMailItem.UserProperties.item("Status").value = "Nie"
Else
 oMailItem.UserProperties.item("Status").Delete
End If

 oMailItem.Subject = Tematy 'procedura gubi temat wiec nadpisujemy
 oItem.Save
 Set oMailItem = Nothing
 End If
End Sub

Notatka

To pole pozwala na dodanie dowolnej notatki do wiadomości pocztowej. Notatka wywołana jest przez komunikat umożliwiający wpisanie w okno treści uwagi. Podobnie jak powyższym makro, przycisk Anuluj usuwa wcześniej dodany wpis.

Aby makro działało poprawnie, należy skopiować całe makro podane powyżej i zastąpić procedurę AddNoteInfo na następujący kod:

 Private Sub AddNoteInfo(oItem As Object)
 strMessageClass = oItem.MessageClass

 If (strMessageClass = "IPM.Note") Then
 Set oMailItem = oItem
 Tematy = oMailItem.Subject
 On Error Resume Next
 oProperty = oItem.UserProperties("Notatka")
 On Error GoTo 0
 If oProperty Is Nothing Then _
 oItem = oMailItem.UserProperties.Add("Notatka", olText)

Dim Notatka_info As String
Notatka_info = InputBox("Wpisz tekst notatki w poniższe pole:", "Umieszczenie opisu w kolumnie notatka")
If Len(Notatka_info) > 0 Then
 oMailItem.UserProperties.item("Notatka").value = Notatka_info
Else
 oMailItem.UserProperties.item("Notatka").Delete
End If

 oMailItem.Subject = Tematy 'procedura gubi temat wiec nadpisujemy
 oItem.Save
 Set oMailItem = Nothing
 End If
End Sub

Jak dokonać zmian w widoku?

Każde pole jest zdefiniowane, utworzone poprzez nadanie obiektu „Status” lub „Notatka”. Pole takie  można wyciągnąć osadzając w widoku folderu wiadomości. Wyciągnięcie tego pola odbywa się w następujący sposób:

  1. Wciskamy prawy klawisz myszy na kolumnie Wiadomości/Wybór pól.
  2. Wybieramy Pola zdefiniowane przez użytkownika.
  3. Przeciągamy pole Status/Notatka np. za tematem maila.

Rys 1. Sposób przeciągnięcia kolumny z notatką/statusem

Operacja ta się nie uda, w przypadku kiedy nie dokonaliśmy żadnego wprowadzenia Notatek do wiadomości pocztowej w danym folderze. Notatki o długiej szerokości pokazują się w widoku foldera, w dymku (po najechaniu kursorem myszy). Aby otrzymać podobny obiekt/kolumnę, należy w każdym z folderów użyć przynajmniej 1 raz procedury utworzenia pola powyższym makrem.

Dla dwóch pól można wykorzystać formę lub zdublowane polecenie podania wpisu. Przykład zgodnie z tym linkiem.

Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.

Podziel się ze znajomymi:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Blip
  • Grono
  • Gwar
  • Kciuk.pl
  • LinkedIn
  • MySpace
  • OSnews.pl
  • Śledzik
  • Spis.pl
  • Technorati
  • Twitter
  • Vala.pl
  • Wahacz.pl
  • Wykop

2 Komentarze do tej wiadomości

  • Robert

    Czy to macro powinno działać w Outlooku 2010? Próbowałem i coś nie działa, ale może coś źle zrobiłem.
    Komuś to może działa na Outlooku 2010?
    Z góry dzięki za pomoc.

  • Oskar

    Makro działa na 2k10 również, jednakże jest ono uzależnione od typu konta. Na POP wiadomości pobierasz i możesz z nimi robić co chcesz. Po uruchomieniu kodu i przeciągnięciu nowej kolumny na widok wiadomości masz dostęp do wpisanych danych. Na IMAP i Exchange taka operacja nie będzie możliwa, ponieważ modyfikacja wiadomości będzie nadpisana przez następną synchronizacje, efektem czego wprowadzone dane nie będą już widoczne.
    Dzięki za kontakt.

Wpisz swój komentarz:

Comment Spam Protection by WP-SpamFree