VBScript创建Outlook规则

时间:2017-04-04 04:16:33

标签: vba vbscript outlook outlook-vba

我正在尝试创建一个可以分发的vbscript,以便为运行它的每个用户创建一个outlook规则。

我有一些代码(下面),但我发现我无法通过VBS使用Actions.Run(“VBA代码”)创建规则。我需要一条规则,以便每当收到"test@test.com"的电子邮件时,都会显示msgbox,用户必须单击“确定”。

通过我的研究表明VBA可能以某种方式在VBS文件中实现,但我找不到它。

我想要运行的VBA是:

Sub newmsg(item As Outlook.MailItem)
 MsgBox "You have an urgent message: " & item.Subject
End Sub

和VBS是:

'--> Create some constants
Const RULE_NAME = "Urgent Message"  '<-- Edit the name of the rule
Const olRuleReceive = 0

'--> Create some variables
Dim olkApp, olkSes, olkCol, olkRul, olkCon, olkAct

'--> Connect to Outlook
Set olkApp = CreateObject("Outlook.Application")
Set olkSes = olkApp.GetNamespace("MAPI")
olkSes.Logon olkApp.DefaultProfileName

'--> Get the rules collection
Set olkCol = olkSes.DefaultStore.GetRules()

'--> Create a new receive rule
Set olkRul = olkCol.Create(RULE_NAME, olRuleReceive)

'--> Set the rule's condition to look for a specific word in the subject
Set olkCon = olkRul.Conditions.From
With olkCon
    .Enabled = True
    .Recipients.Add ("email address here")
    .Recipients.ResolveAll
End With


'--> Set the rule's action
Set olkAct = olkRul.Actions.Run("Project1.newmsg")
With olkAct
    .Enabled = True
End With

'--> Save the rule
olkCol.Save False

'--> Disconnect from Outlook
olkSes.Logoff
Set olkCon = Nothing
Set olkAct = Nothing
Set olkRul = Nothing
Set olkCol = Nothing
Set olkSes = Nothing
Set olkApp = Nothing

'--> Terminate the script
WScript.Quit

1 个答案:

答案 0 :(得分:1)

修改VBA项目唯一受支持的方法是使用Visual Basic Extensibility接口为VBA编辑器开发一个加载项。

如果您需要创建执行自定义操作的规则,那么我建议您构建一个Outlook加载项来处理传入的电子邮件,并在加载项的代码中执行操作,而不是依赖于可能的VBA方法或者可能不存在。