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

Recently Active Members

Profile picture of vbatools
Profile picture of Karol Stilger
Profile picture of Anorak
Profile picture of marcinmachalowski
Profile picture of Joanna Subik
Profile picture of programistaaccess
Profile picture of piotrpawlik
Profile picture of Emil Wasilewski
Profile picture of kicekpicek
Profile picture of coldfusion
Profile picture of Gosia Borzęcka
Profile picture of lukaszch
Profile picture of itadministracja
Profile picture of farbenia
Profile picture of Łukasz Kałużny
Profile picture of kabzinski
Profile picture of rtynski
Profile picture of leszekbetlinski
Profile picture of Iv
Profile picture of Justyna Spychała