所有文件夹中的 Outlook 规则 运行
Outlook rule run in all the folders
我有一个 VBA 脚本,它是 运行 outlook 中的规则,每 10 分钟重复一次规则执行。
工作正常,但我有一个小问题,规则只在收件箱文件夹中工作,我需要处理所有文件夹。
我尝试使用“IncludeSubfolders:= True”但没有运气。
这是我的脚本:
Public Sub TriggerTimer(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idevent As Long, ByVal Systime As Long)
Dim oOk As Outlook.Application
Set oOk = GetObject(, "Outlook.Application")
If Err.Number <> 0 Then Set oOk = CreateObject("Outlook.Application")
On Error GoTo 0
oOk.Session.DefaultStore.GetRules.Item("AssistantPlanifRobot").Execute
MsgBox "Rule run"
End Sub
和计时器部分:
Public Sub ActivateTimer(ByVal nMinutes As Long)
nMinutes = nMinutes * 1000 * 60 'milliseconds
If TimerID <> 0 Then Call DeactivateTimer 'Check to see if timer is running before call to SetTimer
TimerID = SetTimer(0, 0, nMinutes, AddressOf TriggerTimer)
If TimerID = 0 Then
MsgBox "The timer failed to activate."
End If
End Sub
有人知道吗?
默认情况下,规则是 运行 针对 Outlook 中的收件箱文件夹。
您可以在代码中执行所有操作,而不是依赖 Outlook 中的规则(end-user 事情),因此请考虑在不涉及规则的情况下在 VBA 中实现所需的功能。
如上所述,运行ning 规则的默认行为是 运行 in Inbox
。
但您可以 运行 特定文件夹的特定规则。我在特定文件夹中手动移动了一些制作规则对象的邮件和 运行 下一个有效的代码:
Sub testDefaultStore()
Dim oRules As Outlook.Rules, rul As Outlook.Rule, ruleName As String
Dim objNS As NameSpace, ctrlBr As Outlook.Folder, folderName As String
ruleName = "the real rule name"
folderName ="the folder name where to run"'
Set objNS = Application.GetNamespace("MAPI")
Set ctrlBr = Application.Session.GetDefaultFolder(olFolderInbox).Folders(folderName)
Set oRules = Application.Session.DefaultStore.GetRules
For Each rul In oRules
Debug.Print rul.RuleType, rul.Name
If rul.Name = ruleName Then
rul.Execute ShowProgress:=True, Folder:=ctrlBr
End If
Next
End Sub
这只是在特定文件夹上 运行ning 的一个例子。
知道规则名称和文件夹名称,可以直接尝试:
oOk.Session.DefaultStore.GetRules.Item("AssistantPlanifRobot").Execute ShowProgress:=True, Folder:=ctrlBr
使用的文件夹要按照上面的设置。即使它不是 Inbox
子文件夹,我也可以告诉你怎么做,但现在我必须离开我的办公室。
对于 Inbox
及其子文件夹,它应该作为:
oOk.Session.DefaultStore.GetRules.Item("AssistantPlanifRobot").Execute ShowProgress:=True,IncludeSubfolders:=True
我有一个 VBA 脚本,它是 运行 outlook 中的规则,每 10 分钟重复一次规则执行。 工作正常,但我有一个小问题,规则只在收件箱文件夹中工作,我需要处理所有文件夹。 我尝试使用“IncludeSubfolders:= True”但没有运气。 这是我的脚本:
Public Sub TriggerTimer(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idevent As Long, ByVal Systime As Long)
Dim oOk As Outlook.Application
Set oOk = GetObject(, "Outlook.Application")
If Err.Number <> 0 Then Set oOk = CreateObject("Outlook.Application")
On Error GoTo 0
oOk.Session.DefaultStore.GetRules.Item("AssistantPlanifRobot").Execute
MsgBox "Rule run"
End Sub
和计时器部分:
Public Sub ActivateTimer(ByVal nMinutes As Long)
nMinutes = nMinutes * 1000 * 60 'milliseconds
If TimerID <> 0 Then Call DeactivateTimer 'Check to see if timer is running before call to SetTimer
TimerID = SetTimer(0, 0, nMinutes, AddressOf TriggerTimer)
If TimerID = 0 Then
MsgBox "The timer failed to activate."
End If
End Sub
有人知道吗?
默认情况下,规则是 运行 针对 Outlook 中的收件箱文件夹。
您可以在代码中执行所有操作,而不是依赖 Outlook 中的规则(end-user 事情),因此请考虑在不涉及规则的情况下在 VBA 中实现所需的功能。
如上所述,运行ning 规则的默认行为是 运行 in Inbox
。
但您可以 运行 特定文件夹的特定规则。我在特定文件夹中手动移动了一些制作规则对象的邮件和 运行 下一个有效的代码:
Sub testDefaultStore()
Dim oRules As Outlook.Rules, rul As Outlook.Rule, ruleName As String
Dim objNS As NameSpace, ctrlBr As Outlook.Folder, folderName As String
ruleName = "the real rule name"
folderName ="the folder name where to run"'
Set objNS = Application.GetNamespace("MAPI")
Set ctrlBr = Application.Session.GetDefaultFolder(olFolderInbox).Folders(folderName)
Set oRules = Application.Session.DefaultStore.GetRules
For Each rul In oRules
Debug.Print rul.RuleType, rul.Name
If rul.Name = ruleName Then
rul.Execute ShowProgress:=True, Folder:=ctrlBr
End If
Next
End Sub
这只是在特定文件夹上 运行ning 的一个例子。
知道规则名称和文件夹名称,可以直接尝试:
oOk.Session.DefaultStore.GetRules.Item("AssistantPlanifRobot").Execute ShowProgress:=True, Folder:=ctrlBr
使用的文件夹要按照上面的设置。即使它不是 Inbox
子文件夹,我也可以告诉你怎么做,但现在我必须离开我的办公室。
对于 Inbox
及其子文件夹,它应该作为:
oOk.Session.DefaultStore.GetRules.Item("AssistantPlanifRobot").Execute ShowProgress:=True,IncludeSubfolders:=True