MS Outlook 2016 VBA - Application.ActiveExplorer.CurrentFolder - 似乎不起作用(它在OL2007中有效)


-1

几年前我将一些特定的VBA代码复制到outlook 2007中。它在我选择的当前文件夹上运行我的规则。该公司刚刚升级到Outlook 2016(办公室365),虽然保留了VBA代码(在“ThisOutlookSession”中)但它不再有效。

是否存在一些不再支持的VBA代码?

Sub RunAllInboxRules()
Dim st As Outlook.Store
Dim myRules As Outlook.Rules
Dim rl As Outlook.Rule
Dim runrule As String
Dim rulename As String

rulename = "DBLP RULE"

Set st = Application.Session.DefaultStore

Set myRules = st.GetRules
Set cf = Application.ActiveExplorer.CurrentFolder
For Each rl In myRules

If rl.RuleType = olRuleReceive Then

If rl.Name = rulename Then
rl.Execute ShowProgress:=True, Folder:=cf
runrule = rl.Name

End If
End If
Next

Set rl = Nothing
Set st = Nothing
Set myRules = Nothing
End Sub

我也试过了

Set st = Application.Session.Stores(1)

因为我看到其他人与DefaultStore有问题。那并没有解决它。

我也尝试明确说明rulename:

If rl.Name = "DBLP RULE" Then

同样,这并没有使它发挥作用。


2
究竟什么不起作用?
2015年

规则未针对当前选定的文件夹运行,因此此VBA代码中的某些内容显然与Outlook 2016不兼容。手动运行规则时,它按预期工作。
阿德里安

Answers:


0

事实证明代码很好。虽然我确实更改了宏安全设置以允许宏运行(在安装Outlook 2016之后)但它在重新启动outlook时没有生效。我重新启动了几次,它生效了。

有趣的是,我没有得到一个弹出窗口,说明宏已被禁用。

问题现已解决。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.