Outlook:将规则应用于当前消息吗?

Outlook:将规则应用于当前消息吗?

KMail 有一个非常有用的功能:您可以定义一系列规则,这些规则仅在您按下键盘快捷键时运行,并且仅针对突出显示的邮件。这使我能够在邮件进入收件箱时阅读它,然后只需按一下键即可将其归档。

我如何在 Outlook 中复制此操作?可能是某个由按键触发的 VBA 脚本针对当前选定的所有邮件运行所有规则?

答案1

是的,你可以这样做,但你必须有点技巧。步骤概述:制定查找类别的归档规则,然后制作一个按钮运行宏以将选定的消息更改为该类别,然后运行规则。查看此问题的完整答案,包括宏代码...

根据需要快速运行 Outlook 规则?

我的回答更加复杂一些,通过用前缀命名基于类别的规则,以便它们可以由宏专门运行,但这只是可选的。

答案2

您的文件夹有多大?您可以手动运行规则,但这适用于整个文件夹,但我想如果您的文件夹中有大量消息,这可能会非常慢。

该链接描述了使用“管理规则和警报”在文件选项卡中单击“立即运行规则”。

答案3

不幸的是,没有办法对选定的邮件运行 Outlook 规则。只能对文件夹运行。:-( 即使使用Outlook 对象模型在 VBA 中。

答案4

答案是“是”和“否”。对于邮件,答案是“否”,对于移动到文件夹的邮件,答案是“是”。

许多网站使用的基本 VBAhttp://www.slipstick.com/outlook/rules/run-outlook-rules-startup/

Sub RunAllInboxRules()
    Dim st As Outlook.Store
    Dim myRules As Outlook.Rules
    Dim rl As Outlook.Rule
    Dim count As Integer
    Dim ruleList As String
    'On Error Resume Next

    ' get default store (where rules live)
    Set st = Application.Session.DefaultStore
    ' get rules
    Set myRules = st.GetRules

    ' iterate all the rules
    For Each rl In myRules
        ' determine if it's an Inbox rule
              If rl.RuleType = olRuleReceive And rl.IsLocalRule = True Then
            ' if so, run it
            rl.Execute ShowProgress:=True
            count = count + 1
            ruleList = ruleList & vbCrLf & rl.Name
        End If
    Next

    ' tell the user what you did
    ruleList = "These rules were executed against the Inbox: " & vbCrLf & ruleList
    MsgBox ruleList, vbInformation, "Macro: RunAllInboxRules"

    Set rl = Nothing
    Set st = Nothing
    Set myRules = Nothing
End Sub

如果您想针对移动邮件到的文件夹而不是收件箱运行它,请指定该文件夹。

http://msdn.microsoft.com/en-us/library/office/ff864433%28v=office.14%29.aspx

假设您在收件箱下创建一个名为“RunRules”的文件夹

将消息移动到文件夹后:

Set fldRunRules = st.GetDefaultFolder(olFolderInbox).Folders("RunRules")

rl.Execute Folder:=fldRunRules

相关内容