VBATools

Modyfikacja tematu podczas odpowiedzi na wiadomość

by 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.
:, , , ,

Leave a Reply