按需快速运行 Outlook 规则?

ama*_*eod 4 microsoft-outlook script automation

我在 MS Outlook 2007 中设置了一个规则,我不想自动运行,但我想手动偶尔运行。我想尽可能加快“手工”过程。有没有办法让我可以在我的工具栏中有一个运行规则的按钮?

基本上,我希望在收到某些类型的消息(由另一台服务器自动生成)时在收件箱中看到它们,但是一旦我看到它们就不再关心了。其中一些甚至是微不足道的,以至于一旦我看到标题,我就希望将它们清除到存档中。每次我觉得我的收件箱太杂乱时,我都会转到“工具”菜单、“规则和警报”、“立即运行规则”,找到我想要的规则,单击其复选框,单击“运行”按钮,然后在全部完成后单击“确定”两次完毕。我很想把这个过程归结为一个按钮点击。

Rhy*_*son 8

你可以:

  1. 将 Run Rules Now... 菜单项添加到您的菜单中(通过工具|自定义);或者
  2. 您可以编写一些 VBA 来运行特定规则(请参见此处:http : //pyrocam.com/how-to-run-outlook-2007-rules-from-a-button/


Sau*_*ysw 5

我或多或少想做同样的事情。有些电子邮件一旦进入我的收件箱,我就会通过规则归档——我什至不看它们。然后还有其他一些我需要查看和阅读,但是一旦我这样做了,我也可以制定一个规则来快速归档它们。这就是 Outlook 中的规则系统似乎失败的地方。它只发生在新项目上,主要是为了让 Exchange 服务器可以自己完成。所以我浪费了很多时间将阅读的消息拖到正确的文件夹中——我有几百个这样的文件夹。

以下是我实现它的基本步骤:

  1. 创建了一个名为“自动文件”的类别。
  2. 编写了检查类别“自动文件”的规则作为标准的一部分。将它们保存Fileit:在名称中以向我展示这些是基于类别的规则(即延迟操作,与我的其他规则不同)。
  3. 编写了一个宏(如下),将选定的邮件项目设置为此类别,将它们标记为已读,然后运行规则名称以Fileit.
  4. 在我的主工具栏中添加了一个按钮来运行这个宏。

所以现在,要将我已阅读的内容归档到我的收件箱中,我选择它并点击按钮,一切都会根据我的Fileit规则神奇地消失。否则我不使用该类别,所以这对我有用。还要注意类别设置仍然存在(这可以被认为是一个加分项)。如果您已经经常使用类别,这将不会很好地工作。请注意,这会将规则变成“仅限客户端”规则(类别位会这样做),这基本上意味着 Exchange 无法为您运行它——这很好,但是当您保存规则。代码没什么特别的,你几乎肯定可以在几分钟内自己完成,但如果你愿意,我可以在这里复制/粘贴。

Sub myFileItMacro()
    ' 2015-06-24 SWB First attempt to automate Outlook filing
    ' Note that Outlook 2013 does not have a macro recorder, which doesn't help.
    Dim myItem As Outlook.MailItem
    Dim intItemCount As Integer
    Dim myRules As Outlook.Rules
    Dim myRule As Outlook.Rule
    Dim intLoop As Integer

    ' Used to set category of more than one item ...
    intItemCount = Application.ActiveExplorer.Selection.Count
    If intItemCount > 0 Then        ' ... and to check at least one is selected

        ' Next, assign it to the category.  This should be set up beforehand.
        For intLoop = 1 To intItemCount
            ' This could throw an error if there is nothing selected, presumably.
            Set myItem = Application.ActiveExplorer.Selection.Item(intLoop)

            myItem.Categories = "Auto-file"
            myItem.UnRead = False           ' Flag as read
            ' You should be able to see this in the category column once this line runs.
            myItem.Save
        Next

        ' Lastly, run the rules on the inbox, although, it would be even better
        ' to run rules just on this item.  Hmmm
        ' You have to do this by going through the rules.
        Set myRules = Application.Session.DefaultStore.GetRules
        For Each myRule In myRules
            ' Execute only rules named starting with "Fileit".
            ' These have the category filter.
            If Left(myRule.Name, 6) = "Fileit" Then
                myRule.Execute (False)
            End If
        Next

    End If

End Sub
Run Code Online (Sandbox Code Playgroud)

从第二个答案附加。

我忘了提到在 Outlook 2010 和 2013(或 365,如果你喜欢)中有“快速步骤”。这些类型允许您设置自动文件按钮。我对这些的问题是您需要为每个规则设置一个。如果我有 50 件事要归档到 50 个文件夹,我需要 50 个快速步骤,这有点违背目的,因为您将花费与将电子邮件拖到正确(子)文件夹一样长的时间来寻找正确的快速步骤。我在这里可能是错的,如果我错了,请纠正我,但这是我的理解。

上面代码的优点是您可以在功能区中使用一个按钮来应用许多不同的规则,即使选择了多个项目,也会对每个项目应用正确的规则。我发现的唯一缺点是,如果我没有设置规则(一段时间后很难记住它们,我有家用和工作 PC 等),它只会设置类别并且电子邮件不会移动。没什么大不了的。哦,你必须允许宏运行,因为它们显然是邪恶的。

我知道最初的海报是在 2011 年,他们可能已经完全忘记了这一切,但这个问题实际上仍然有效并且在伟大的互联网上基本上没有答案,所以我想我会贡献!这是我认为 Outlook 的可用性确实缺乏的一个领域,这一切都归结为规则的第一部分,即“在邮件到达后应用此规则”。如果您可以将其更改为“当我按下按钮时应用此规则”或类似内容,您将不需要我的代码。至少你可以设置一个基于类别的规则,这就是上面代码有效的原因。