0

为什么运行所有已启用规则的代码不在 Outlook-2016 中运行?我在 Outlook 2007、2010 和 2013 上使用它没有任何问题,但它在 Outlook 2016 中不起作用。

Sub OrginalRunActiveCatInboxRules()

Dim Session As Outlook.NameSpace
Dim Report As String
Dim currentItem As Object
Dim currentRule As Outlook.Rule
Dim rules As Outlook.rules
Dim ruleList As String
Set Session = Application.Session

Set rules = Session.DefaultStore.GetRules()

For Each currentRule In rules

   If currentRule.RuleType = olRuleReceive Then         
'determine if it’s an Inbox rule, if so, run it
       If currentRule.Enabled Then
           If Left(currentRule.name, 4) = "Cat." Then
               MsgBox currentRule.name
               currentRule.Execute ShowProgress:=True   
' Sortering niet laten zien
'               ruleList = ruleList & vbCrLf & currentRule.Name
           End If
       End If
   End If
 Next


' tell the user what you did
' ruleList = "These rules were executed against the Inbox: " & vbCrLf & ruleList
' MsgBox ruleList, vbInformation, "Macro: RunAllActiveInboxRules"
Set rules = Nothing
Set currentRule = Nothing
End Sub

代码运行到下一个,但在那里给出错误。第一条规则是否启用并不重要,以 Cat 开头。或不。它只是不会转到循环中的下一个项目,但会产生错误。

我该怎么做才能使代码再次工作?

4

2 回答 2

1

如果某些规则被标记为“来自其他计算机”,请检查规则向导。如果您有这样的情况,那么代码将在该行中断:

For Each currentRule In rules

我现在也有同样的问题——我花了很多时间来解决这个问题。还有一件事可能是一个问题:如果任何规则被破坏,例如引用一个不存在的目录,则规则对象将不包含任何规则。

如果解决上述问题,请删除所有可疑规则并开始将它们一一添加。

于 2017-01-26T19:04:49.860 回答
-1

当我取消选择此选项时,我的一个被标记为“在这台计算机上”,脚本再次运行。

于 2021-11-27T16:03:25.143 回答