web-dev-qa-db-ja.com

Outlook2013の受信メールの件名を動的に変更するVBAスクリプト

私はこのOutlookスクリプトの例を見てきましたが、これは私にとって似たような素晴らしいスタートです: 件名を編集するためのOutlookスクリプト

ただし、より複雑な文字列操作を必要とするより難しい方法で、到着時に着信メッセージの件名を変更する必要があります。

これは実際に私が使用したベースコードであり、最新の状態で機能します。

Sub ConvertToPlain(MyMail As MailItem)
    Dim strID As String
    Dim objMail As Outlook.MailItem

    strID = MyMail.EntryID
    Set objMail = Application.Session.GetItemFromID(strID)
    objMail.Subject = Left(objMail.Subject, 18)
    objMail.Save

    Set objMail = Nothing
End Sub

さて、私は元の主題が常に次の形式になっています(括弧内はすべて変数です):

Ticket [#] - [SOMETHING] - [SOMETHING] - [TITLE]

ご覧のとおり動的に変化する「[SOMETHING]-[SOMETHING]-」を削除し、以下のみを保持したいと思います。

Ticket [#] - [TITLE]

このようにして、Outlookで簡単に並べ替え/フィルタリングを行うことができます。これはVBAでどのように達成できますか?ありがとうございました。

2
Shackrock

最善の策は、必要な部分を正規表現するか、形式が常にこの形式であることがわかっている場合は、-の文字列を分割して、最初と最後の文字列を取得することです。

の線に沿って:

Sub ConvertToPlain(MyMail As MailItem)
    Dim strID As String
    Dim objMail As Outlook.MailItem
    Dim splitSubject() as String
    Dim concatSubject as String

    strID = MyMail.EntryID
    Set objMail = Application.Session.GetItemFromID(strID)
    splitSubject = Split(objMail.Subject, "-")
    concatSubject = splitSubject(LBound(splitSubject)) & " - " & splitSubject(UBound(splitSubject))
    objMail.Subject = concatSubject
    objMail.Save

    Set objMail = Nothing
End Sub

そのコードは完全にテストされていませんが、うまくいけば、ある程度軌道に乗ることができます。

3
Jonno