2011-10-18 110 views
0

试图获得一些VBA代码在一起,基本上能够从Outlook 2007中的工具栏上的按钮运行我的规则。以下代码运行我的Exchange服务器收件箱中的规则,它是空的一切都转移到我的“个人收件箱”。我只是想更改下面的代码来阅读我的个人收件箱,而不是我的Exchange邮箱收件箱。已经在网上搜索,无法找到我的答案,因此我的帖子 -设置VBA读取个人收件箱

Sub RunAllInboxRules() 
Dim st As Outlook.Store 
Dim myRules As Outlook.Rules 
Dim rl As Outlook.Rule 
Dim count As Integer 
Dim ruleList As String 
'On Error Resume Next 


' get default store (where rules live) 
Set st = Application.Session.DefaultStore 
' get rules 
Set myRules = st.GetRules 

' iterate all the rules 
For Each rl In myRules 
    ' determine if it's an Inbox rule 
    If rl.RuleType = olRuleReceive Then 
     ' if so, run it 
     rl.Execute ShowProgress:=True 
     count = count + 1 
     ruleList = ruleList & vbCrLf & rl.Name 
    End If 
Next 

' tell the user what you did 
ruleList = "These rules were executed against the Inbox: " & vbCrLf & ruleList 
MsgBox ruleList, vbInformation, "Macro: RunAllInboxRules" 

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

回答

0

试试这个。我在我的机器上测试过。这将登录到您登录的邮箱并相应地运行规则

Sub RunAllInboxRules() 
Dim objOL As Outlook.Application 
Dim st As Outlook.Store 
Dim myRules As Outlook.Rules 
Dim rl As Outlook.Rule 
Dim count As Integer 
Dim ruleList As String 
Dim fldInbox As Object 
Dim gnspNameSpace As Outlook.NameSpace 

'On Error Resume Next 

' get default store (where rules live) 

'Logs into Outlook session 
    Set objOL = Outlook.Application 
    Set gnspNameSpace = objOL.GetNamespace("MAPI") 'Outlook Object 
    'Logs into the default Mailbox Inbox 

'set the store to the mailbox 

Set st = gnspNameSpace.GetDefaultFolder(olFolderInbox).Store 

' get rules 

Set myRules = st.GetRules 

' iterate all the rules 
For Each rl In myRules 
    ' determine if it's an Inbox rule 
    If rl.RuleType = olRuleReceive Then 
     ' if so, run it 
     rl.Execute ShowProgress:=True 
     count = count + 1 
     ruleList = ruleList & vbCrLf & rl.Name 
    End If 
Next 

' tell the user what you did 
ruleList = "These rules were executed against the Inbox: " & vbCrLf & ruleList 
MsgBox ruleList, vbInformation, "Macro: RunAllInboxRules" 

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