用于从模块运行规则的VBA代码

时间:2015-06-22 15:57:52

标签: vba outlook outlook-vba

我有一个模块,我需要运行规则。

Sub RunRuleMyRule()
    Application.Session.DefaultStore.GetRules.Item("myRuleName").Execute
End Sub

这适用于ThisOutlookSession,没有任何问题。

但是我需要从我的模块中调用“RunRuleMyRule” OR 我需要更改一些内容,以便模块识别Application.Session ....

2 个答案:

答案 0 :(得分:2)

您需要为规则指定[moduleName]。[subName]函数,而不仅仅是触发规则时要调用的子名称。

此外,您可以从代码中删除Application属性,因此以下代码应该可以在其他模块中使用:

Sub RunRuleMyRule()
   Session.DefaultStore.GetRules.Item("myRuleName").Execute
End Sub

有关详细信息,请参阅Getting Started with VBA in Outlook 2010

答案 1 :(得分:1)

我建议您尝试引用该应用程序,因为它可能无法在ThisOutlookSession之外被识别,这是一个类模块。

尝试这样的事情:

Dim oOk As Outlook.Application

On Error Resume Next
Set oOk = GetObject(, "Outlook.Application")
If Err.Number <> 0 Then Set oOk = CreateObject("Outlook.Application")
On Error GoTo 0

oOk.Session.DefaultStore.GetRules.Item("myRuleName").Execute