我从网上获得了以下代码来运行Outlook 2010规则。
我试图通过从组合框中选择它一次只运行一个规则,但它会运行所有规则。
我希望它能在完成后显示规则的名称。
Option Explicit
Private st As Outlook.Store
Private myRules As Outlook.Rules
Private rl As Outlook.Rule
Private count As Integer
Private ruleList As String
Private i As Long
Private Sub cmd_close_Click()
Me.cmb_select_rule.Clear
Unload Me
End Sub
Sub RunMyRules()
frmRunRules.Show
End Sub
Private Sub frmRunRules_Initialize()
Set st = Application.Session.DefaultStore
Set myRules = st.GetRules
With Me.cmb_select_rule
.Clear
For Each rl In myRules
.AddItem rl.Name
Next rl
End With
End Sub
Private Sub cmdRun_Click()
Me.Hide
Set st = Application.Session.DefaultStore
Set myRules = st.GetRules
With Me.cmb_select_rule
For i = 0 To .ListCount - 1
If .ListIndex(i) Then
Set rl = myRules.Item(.List(i))
If rl.RuleType = olRuleReceive Then
' if so, run it
rl.Execute ShowProgress:=True
count = count + 1
ruleList = ruleList & vbCrLf & rl.Name
End If
End If
Next i
End With
ruleList = "These rules were executed against the Inbox: " & vbCrLf & ruleList
MsgBox ruleList, vbInformation, "Outlook Rules"
Set rl = Nothing
Set st = Nothing
Set myRules = Nothing
Me.cmb_select_rule.Clear
End Sub
答案 0 :(得分:0)
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 = "Your Rule Name"
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
ruleList = "Rule was executed correctly:" & vbCrLf & runrule
MsgBox ruleList, vbInformation, "Macro: Whatever_Finished"
Set rl = Nothing
Set st = Nothing
Set myRules = Nothing
End Sub
尝试上面运行一个规则,只需将rulename编辑为现有规则之一,然后将Whater_Finished编辑为您想要的任何内容...没有组合框,但是您可以开始使用它。