我在 MS Outlook 2007 中设置了一条规则,我不想让它自动运行,但我想偶尔手动运行。我想尽可能加快“手动”过程。有没有办法让我在工具栏上有一个按钮来运行该规则?
基本上,有些类型的邮件(由另一台服务器自动生成)我希望在收到时在收件箱中看到,但看到后就不再关心了。有些邮件甚至非常琐碎,以至于看到标题后,我希望将它们清除到存档中。每次我觉得收件箱里堆满了这些邮件时,我都会转到“工具”菜单、“规则和警报”、 “立即运行规则”,找到我想要的规则,单击其复选框,单击“运行”按钮,然后在完成所有操作后单击两次“确定”。我希望将这个过程简化为单击一次按钮。
答案1
您可以:
- 将立即运行规则...菜单项添加到您的菜单(通过工具|自定义);或者
- 您可以编写一些 VBA 来运行特定规则(参见此处:http://pyrocam.com/how-to-run-outlook-2007-rules-from-a-button/)
答案2
我或多或少也想做同样的事情。有些电子邮件一进入收件箱,我就会通过规则归档——我甚至都不看它们。还有一些电子邮件我需要查看和阅读,但一旦我这样做了,我也可以制定规则来快速归档它们。Outlook 中的规则系统似乎在这方面失败了。这种情况只发生在新项目上,主要是因为 Exchange 服务器可以自行完成。所以我浪费了很多时间将已读邮件拖到正确的文件夹中——我有几百个这样的文件夹。
以下是我实现它的基本步骤:
- 创建了一个名为“自动文件”的类别。
- 编写规则,检查“自动归档”类别是否为标准的一部分。保存时使用
Fileit:
名称来向我显示这些是基于类别的规则(即延迟操作,与我的其他规则不同)。 - 编写了一个宏(如下),将选定的邮件项目设置为此类别,将其标记为已读,然后运行以 开头的规则名称的规则
Fileit
。 - 在我的主工具栏中添加了一个按钮来运行此宏。
因此,现在,要将我已阅读的内容归档到收件箱中,我选择它并点击按钮,然后根据我的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
附加自第二个答案。
我忘了说 Outlook 2010 和 2013(或者 365,如果你喜欢)中有“快速步骤”。这些允许您设置自动归档按钮。我遇到的问题是您需要为每个规则设置一个。如果我有 50 个文件要归档到 50 个文件夹中,我需要 50 个快速步骤,这有点违背了目的,因为您花在寻找正确快速步骤上的时间与将电子邮件拖到正确(子)文件夹中的时间一样长。我可能错了,如果我错了,请纠正我,但这是我的理解。
上述代码的优点是,您可以在功能区中设置一个按钮,按下该按钮即可应用多个不同的规则,即使选择了多个项目,也会对每个项目应用正确的规则。我发现的唯一缺点是,如果我没有设置规则(一段时间后很难记住所有规则,我有一台家用电脑和一台工作电脑等),它只会设置类别,电子邮件不会移动。没什么大不了的。哦,你必须允许宏运行,因为它们显然是邪恶的。
我知道最初的发帖人是在 2011 年,他们可能已经完全忘记了这件事,但这个问题实际上仍然有效,而且在互联网上基本上没有答案,所以我想我应该做出贡献!这是我认为 Outlook 可用性确实不足的一个方面,而这一切都归结为规则的第一部分,即“邮件到达后应用此规则”。如果您可以将其更改为“按下按钮时应用此规则”或类似内容,那么您就不需要我的代码了。至少您可以将规则设置为基于类别,这就是上述代码有效的原因。
答案3
要按名称运行规则,我使用以下宏:
Sub RunRule()
Application.Session.DefaultStore.GetRules().Item("RULE_NAME_HERE").Execute ShowProgress:=True
End Sub
我在模块中添加代码(使用Alt+F11然后Insert
-> Module
),然后在功能区中添加指向此方法的按钮(使用Customize Ribbon
-> Choose commands from:
-> Macros
)