VBA 脚本动态更改 Outlook 2013 收到的电子邮件的主题行

VBA 脚本动态更改 Outlook 2013 收到的电子邮件的主题行

我看过这个 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 中实现这一点?谢谢。

答案1

最好的办法是要么用 REGEX 找出你想要的部分,要么如果你知道格式总是这种格式,你可以在 - 上拆分字符串并取第一个和最后一个。

大致如下:

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

该代码尚未经过完全测试,但希望能够帮助您走上正轨。

相关内容