KMail 有一个非常有用的功能:您可以定义一系列规则,这些规则仅在您按下键盘快捷键时运行,并且仅针对突出显示的邮件。这使我能够在邮件进入收件箱时阅读它,然后只需按一下键即可将其归档。
我如何在 Outlook 中复制此操作?可能是某个由按键触发的 VBA 脚本针对当前选定的所有邮件运行所有规则?
答案1
是的,你可以这样做,但你必须有点技巧。步骤概述:制定查找类别的归档规则,然后制作一个按钮运行宏以将选定的消息更改为该类别,然后运行规则。查看此问题的完整答案,包括宏代码...
我的回答更加复杂一些,通过用前缀命名基于类别的规则,以便它们可以由宏专门运行,但这只是可选的。
答案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