This question from C:
Is there a setting/way to tell Outlook to run all client-only rules on inbox whenever the application is opened. This way when I come in Monday morning and open Outlook, everything will be filed/classified correctly.
Outlook will run all rules that are enabled when messages are downloaded, although, some rules can fail if there are a lot of messages to process (which is not uncommon when starting Outlook after a weekend away). You can use Outlook's Run Rules Now command to run the rules at any time, with Outlook 2010 and up adding a Select All button in the Run Rules Now dialog.
You can add the Run Rules Now command button to the ribbon or QAT for faster access to the dialog.
If you want something more automatic and are using Outlook 2007 and up, you can run rules using a macro. To run the macro automatically, call the macro from the Application Startup macro, or add it to a button on your ribbon to run it on demand.
Use a macro
Start with the macro from Outlookcode.com, which automates the process of using Run Rules Now, running all rules on the Inbox. As each rule runs, an Outlook dialog box shows you which rule is currently being processed. By adding rl.IsLocalRule = True to the If statement, you can run only the local, or client-side, rules.
At the end, a message box displays, letting you know that the macro is finished. This message box can be removed by deleting (or commenting out) each line that references rulelist.
If you need help using a macro, information and screenshots are at How to use the VBA Editor
Private Sub Application_Startup() RunAllInboxRules End Sub 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 And rl.IsLocalRule = True 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
IsLocalRule property (MSDN)
OL2007+: Run all rules against inbox (OutlookCode.com)
Description of programming with Outlook rules (MSKB) This was written for older versions of Outlook, however, most of the techniques will work in all versions.
How to create a custom rule using Visual Basic for Applications (VBA) in Outlook 2002