Outlook自定义脚本,用于标记主题字段中值小于40的邮件

时间:2016-01-25 22:09:58

标签: vba email outlook

我每天都会在收件箱中收到数以千计的电子邮件提醒,但其中很多都是微不足道的。我想检查这些警报的文本是否包含低于某个阈值的数字;如果数字低于该阈值,请提醒我该消息并显示一个消息框。

我正在使用Outlook 2010并找到了几个关于在VB中编写Outlook宏的教程,包括一个关于以编程方式创建规则以将邮件移动到不同文件夹的教程。

但是我不想检查关键字,我想检查消息(主题字段)文本中的数字是否等于或小于阈值。例如,如果邮件的文本包含以下内容,则会向其发出警告并显示一个消息框: -

enter image description here

我需要帮助的是,如果电子邮件主题字段中的值低于45kohm,是否有任何编写代码的方法只会调用消息框? 我可以在规则中这样做,但我必须包括以下所有值,即39.99,39.98,39.97,这太长了!

1 个答案:

答案 0 :(得分:0)

您可以使用类似于以下内容的VBA macro

Sub SubjectCheckerMessageRule(newMail As Outlook.mailItem)
    '  "script" routine to be called for incoming mail messages
    '  This subroutine has to be linked to this mail type using Outlook's rule assistant
    Dim EntryID As String
    Dim StoreID As Variant
    Dim mi As Outlook.mailItem
    Dim s As String
    Dim x As Double
    Const Prefix = "Resistance,"
    Const Threshold = 40.0  ' or is it 45.0

    '  http://www.vboffice.net/en/developers/security-model-part-1/
    '  In 2003, not 2007 or later
    '  we have to access the new mail via an application reference
    '  to avoid security warnings
    ' 
    EntryID = newMail.EntryID
    StoreID = newMail.Parent.StoreID

    Set mi = Application.Session.GetItemFromID(EntryID, StoreID)

    If InStr(mi.Subject, Prefix) = 1 Then
        s = Mid(mi.Subject, Len(Prefix) + 1)
        If IsNumeric(s) Then
            x = CDbl(s)

            If x <= Threshold Then
                MsgBox x & " <= " & Threshold, vbInformation, "Attention!"
            End If
        End If
    End If

End Sub

使用Outlook's Rule Assistant将此宏定义为感兴趣的传入邮件的Script。为主题定义关键字,如“抵抗”,以确保仅针对相关邮件调用宏。添加一些错误检查。