Microsoft Outlook troubleshooting

Jeden z użytkowników forum miał problem z mechanizmem Windows Search 4.0, który zwracał nadmierną ilość wiadomości dla wcześniej określonego tematu.

Rozwiązaniem jest umieszczenie szukanej treści w apostrofach (Rys.1). 

         Rys.1
           Rys.1 Dokładne wyszukiwanie w Microsoft Outlook

Metodą alternatywną jest umieszczenie kodu VBA, który będzie przeszukiwał w danym folderze maile o podanej treści. Poniższa procedura zawiera dwie metody wyszukania: 

  • Dokładną - gdzie wpisana w okno szukania treść musi dokładnie pasować (wielkość wpisywanych liter nie ma znaczenia),
  • Cząstkową - gdzie treść powinna znajdować się w przeszukiwanym polu (w tym przypadku polu Tematu). 

Obie funkcje są spięte tak, aby w przypadku braku pozytywnego rezultatu zaproponowały użytkownikowi druga metodę. Procedura dla obiektów, które spełniają zakładany warunek zostaną otwarte.

 

Option Explicit
Dim szukana$, szukac_dalej As Object, iFolder$
Dim oFolder As MAPIFolder, oMail As MailItem, x&

Sub szukaj_wiadomosci_po_temacie()
iFolder = Application.ActiveExplorer.CurrentFolder
szukana = InputBox("Podaj dokładną treść tematu wiadomości znajdującej się w folderze ''" & _
iFolder & "''" & vbCr & vbCr & "Wielkość liter nie ma znaczenia.", _
"Dokładne szukanie treści - O'Shon VBATools.pl")
If FindTematDokladnie(szukana) = False Then szukac_dalej = MsgBox("Brak wiadomości z podaną treścią tematu " & szukana & _
"." & vbCr & "Czy chcesz wyszukać wiadomości w której szukane słowo znajduje się w temacie?", _
vbExclamation + vbDefaultButton2 + vbYesNo, "O'Shon VBATools.pl")
If szukac_dalej = vbYes Then
If FindTematCzastkowo(szukana) = False Then MsgBox "Niestety nie ma wiadomości z treścią " & szukana & _
" w folderze ''" & iFolder & "''", vbExclamation, "Szukanie cząstkowe - O'Shon VBATools.pl"
End If
End Sub

Private Function FindTematDokladnie(ByVal tresc$) As Boolean
tresc = """" & tresc & """"
oFolder = Application.ActiveExplorer.CurrentFolder
oMail = oFolder.Items.Find("[Subject]=" & tresc & "")

FindTematDokladnie = False
While Not oMail Is Nothing
DoEvents
oMail.Display (0)
FindTematDokladnie = True
oMail = oFolder.Items.FindNext()
End
oFolder = Nothing
oMail = Nothing
End Function

Private Function FindTematCzastkowo(ByVal tresc$) As Boolean
If Len(Replace(tresc, """", vbNullString)) = 0 Then FindTematCzastkowo = True: Exit Function
oFolder = Application.ActiveExplorer.CurrentFolder

FindTematCzastkowo = False
For x = 1 To oFolder.Items.Count
If oFolder.Items(x).Class = 43 Then
oMail = oFolder.Items(x)
DoEvents
If InStr(1, UCase(oMail.Subject), UCase(tresc)) > 0 Then
oMail.Display (0)
FindTematCzastkowo = True
End If
End If
Next x

oFolder = Nothing
oMail = Nothing
End Function

Osadzenie procedury znajdziesz w artykule: Instalacja i uruchamianie makr. Czynność taką można przypisać do przycisku na pasku lub dodać do menu szybkiego wyboru zgodnie z artykułem: Uruchamianie makr przyciskiem na pasku narzędzi. (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.

Komentarze

Komentarze
Oskar Shon
Oskar Shon, VBATools.pl 2015-01-28 20:45:53
Artykuł został uszkodzony przez wew mechanizm. Aby odczytać go poprawnie należy przejść do http://vbatools.pl/wyszukiwanie-wiadomosci-po-tresci-tematu/