Microsoft Outlook troubleshooting

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 przekserowana 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
Dim oApp As New Outlook.Application
Dim oExp As Outlook.Explorer
Dim oSel As Outlook.Selection
Dim oItem As Object
Dim i As Long
Dim strMessageClass As String
Dim oMailItem As Outlook.MailItem
Dim oProperty As UserProperty
Dim Tematy As String

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(1)
            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")
If Pytanie = vbYes Then
    oMailItem.UserProperties.item(1).value = "Tak"
ElseIf Pytanie = vbNo Then
    oMailItem.UserProperties.item(1).value = "Nie"
Else
    oMailItem.UserProperties.item(1).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ęują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(1).value = Notatka_info
Else
    oMailItem.UserProperties.item(1).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.

Operacja ta sie 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.

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
Jakub
Jakub 2014-02-04 14:37:33
Bardzo fajny dodatek. Zauważyłem tylko jedną wadę w wersji 2010 dodanie notatki lub statusu powoduje rozbicie konwersacji. jest jakaś możliwość usunięcia takiego efektu? Pozdrawiam
Adam
Adam 2014-03-27 09:52:45
Nie działa na Outlook 2013. Czy możemy prosić autora o aktualizację ?
OShon
OShon, VBATools.pl 2014-03-27 10:25:49
Do dyskusji na ten temat zapraszam na Forum. Proszę o utworzenie nowej sprawki.