Modyfikacja tematu podczas odpowiedzi na wiadomość
by vbatools on Oct.29, 2010, under Outlook, Porady
Jeden z fanów Outlook.pl miał ochotę wycinać “RE:” czy “ODP:” wstawiane automatycznie do tematu podczas odpowiedzi na wiadomość. W Outlook 2010 jest to czynność zgoła bezsensowna, ponieważ istnieje tam grupowanie po temacie, która ignoruje w rozwinięciu treść tematu (rys1). Co innego w wersjach wcześniejszych.
Rys 1. Grupowanie metodą konwersacji w Outlook 2010
Oto kod:
Sub Usuniecie_RE()
'MVP OShon from VBATools.pl
Dim MyItem As MailItem
Dim NewItem As MailItem
On Error Resume Next
Select Case TypeName(Application.ActiveWindow)
Case "Explorer"
Set MyItem = ActiveExplorer.Selection.item(1)
MyItem.Display
Case "Inspector"
Set MyItem = ActiveInspector.CurrentItem
Case Else
End Select
On Error GoTo 0
If MyItem Is Nothing Then
MsgBox "Wpierw wskarz lub otwórz wiadomość!", vbExclamation, "VBATools.pl"
GoTo koniec
End If
Set NewItem = MyItem.Reply
NewItem.Subject = Trim(Replace(NewItem.Subject, "RE:", ""))
NewItem.Subject = Trim(Replace(NewItem.Subject, "ODP:", ""))
NewItem.Display
Set NewItem = Nothing
MyItem.Close olDiscard
koniec:
Set MyItem = Nothing
End Sub
Pomyślałem że zadanie takie nie jest całkowicie bezpodstawne w przypadku nadawania kolejnych numerów sprawie (usług HelpDesk lub Support Service), gdzie można w dość prosty sposób nadać numer sprawy lub w przypadku odpowiedzi powiększyć go o 1.
Dla przykładu możemy założyć iż temat wiadomości ma następującą postać: “RE: Proszę o pomoc w sprawie HD:123 dotyczy Outlook 2k”
Aby sprostać temu zadaniu należy zastosować poniższą funkcję:
Function Dodaj_numer(MySubject$) Dim MyIDCase&, MyNewSubject$, LS& If InStr(1, MySubject, "HD:") > 0 Then LS = InStr(1, MySubject, "HD:") MyIDCase = Split(Mid$(MySubject, LS + 3, 256))(0) MyIDCase = MyIDCase + 1 MyNewSubject = Left(MySubject, LS - 1) & "HD:" & MyIDCase & _ Mid(MySubject, LS + Len("HD:" & MyIDCase), 256) Else MyNewSubject = MySubject & " HD:" & 1 'lub przypisujemy z repozytorium End If Dodaj_numer = MyNewSubject End Function
Użyć ją można dodając pod spód lub zamieniając linijkę w pierwotnym kodzie:
NewItem.Subject = Trim(Replace(NewItem.Subject, "ODP:", ""))
na:
NewItem.Subject = Dodaj_numer(NewItem.Subject)
To iż nie ma zdarzenia do którego można było by się podpiąć to powyższą procedurę należy uruchamiać po przez Alt+F8 lub dzięki podpięciu skonfigurowanego przycisku w menu Outlooka bądź 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.