Create a macro in Outlook to run a rule

D

DLGolfs

I created a rule in Outlook 2007 for e-mails that have certain words in the
subject line, to be deleted. I have checked the rule and made it first but
it does not run. I have to run it manually but clicking tools, rules and
alerts, run rules, etc. This is pain to do. All my other rules run with no
problem, this is the only one that does not run.
So I thought I would make a macro on the toolbar and then just click on that
and not have to click on tools, rules, etc.
How do I do that?
 
K

Ken Slovak - [MVP - Outlook]

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

Customize the toolbar where you want the macro button and select the macro
from the Macros collection in the customize dialog. It will be in the
Commands tab under the Macros group. Drag it to where you want it. While in
customize you can click your new button and change the name and other
settings.
 
D

DLGolfs

I was directed to this site, but I don't know anything about programming, I
apologize. I put the macro on the toolbar but it does not show any macros are
created. That is my point, I have to create a macro and then I can run it
from the toolbar, but don't know how to creat a macro in Outlook b/c there is
no avenue to do it.
I unfortunatley do not understand the "sub runrulemyrule()" stuff, I am sorry

Why does only this rule not run? all the others run and I set them up the
same way, it runs manually, but not automatically.

ty
 
K

Ken Slovak - [MVP - Outlook]

I have no idea why one or the other of your rules isn't running
automatically, that has nothing to do with Outlook programming. That you can
ask on one of the general Outlook groups.

That code I showed is the macro. You use Alt+F11 to open the Outlook VBA
project and open a code module there and put the code there, then it will
show up as a macro. You just need to change the code to use the actual name
of your rule rather than "myRuleName".
 
D

DLGolfs

OK here is what I did, the rules name is Delete spam:
Sub RunRuleDeleteSpam()
Application.Session.DefaultStore.GetRules.Item "Delete Spam.Execute"
End Sub

When I try to run it I get a run time error, The operation failed. An
object cannot be found. There is a number too.
I have the rule set up as Delete spam

then I made some changes and here is the string:
Sub RunRuleDeleteSpam()
Application.Session.DefaultStore.GetRules.Item Delete Spam.Execute
End Sub

now I am getting a syntax error

I am trying, never did this in the past, please be patient :)
 
K

Ken Slovak - [MVP - Outlook]

Sub RunRuleDeleteSpam()
Application.Session.DefaultStore.GetRules.Item("Delete Spam").Execute
End Sub
 
D

DLGolfs

ok, copy , pasted below into the editor module, run "macro" from VBA and
outlook and nothing happens, sorry

I put in in a module and a design module and neither work.
 
K

Ken Slovak - [MVP - Outlook]

The macro should be in a code module.

So what happens? Do you get any errors or what? It might be necessary to
expand that one-liner so you can see where things are failing. Let's try
that:

Sub RunRuleDeleteSpam()
Dim oNS As Outlook.NameSpace
Dim oStore As Outlook.Store
Dim colRules As Outlook.Rules
Dim oRule as Outlook.Rule

Set oNS = Application.GetNameSpace("MAPI")
Set oStore = oNS.DefaultStore
Set colRules = oStore.Rules
Set oRule = colRules.Item("Delete Spam")
oRule.Execute
End Sub

Put your cursor in that macro in the VBA project and press F5. See what
happens when the macro executes, if you get any errors or what.
 
D

DLGolfs

There is no code module only class module and module, so I used module.

cut and pasted, then ran and got run time error 438, Object does not support
property or method,
then it higlights this line:
Set colRules = oStore.Rules
 
K

Ken Slovak - [MVP - Outlook]

A module is a code module.

Sorry, that line should have been:

Set colRules = oStore.GetRules()
 
D

DLGolfs

Just so I know that I am doing it correctly, through VB or Oulook, I chose
macro and run macro and click ok?

I did that and nothing happened :(
 
D

DLGolfs

By the way, I made sure the changed was saved, closed OUtlook, then opened
it, enabled the macros and tried to run it.
I made sure I was in the file it is suppose to run the rule.

But nothing happened, no errors
 
K

Ken Slovak - [MVP - Outlook]

You will need to set a breakpoint, step the code and see what's going on
with it. To do so click in your macro code on the Set colRules line in the
left hand border of the code module window. The line should then be
highlighted. When you run the macro it will stop on that line.

You can then step the code from there using F8. At each step you can use the
Immediate and Locals windows (View, Immediate Window and Locals Window) to
check the values of various variables and to output information. Then you
can see what's going on.
 
D

DLGolfs

ok, i tried to "set a break point" to "run to cursor" on several lines but
then when I do that , I try to run the macro, it still does nothing, I hit
continue and it goes through the lines and still nothing happens

I am sorry that I can't do this for you. I have built computers and run a
lot of applicaitons but have never programmed and I appreciate your patience.
 
D

DLGolfs

It also said that it can't execute in breakmode

Ken Slovak - said:
You will need to set a breakpoint, step the code and see what's going on
with it. To do so click in your macro code on the Set colRules line in the
left hand border of the code module window. The line should then be
highlighted. When you run the macro it will stop on that line.

You can then step the code from there using F8. At each step you can use the
Immediate and Locals windows (View, Immediate Window and Locals Window) to
check the values of various variables and to output information. Then you
can see what's going on.






.
 
D

DLGolfs

I was thinking and I see whatyou are trying to see, but if I put a breakpoint
and nothing happens then I don't see what that shows.

If it goes through 6 lines, let's say then how do we see if it works if all
the lines are not run ?
sorry, just thoughts
 
K

Ken Slovak - [MVP - Outlook]

The idea is to see if the code runs without any errors, what the values of
the variables is at each step (for example Nothing for a Rules collection
tells us something, as does Nothing for the value of a Rule when you try to
get it), and what exactly is happening when each code line executes.

None of us can test or debug the code on your machine for you, obviously.
 
D

DLGolfs

Sorry that I cannot do the programming that you want; but it does run without
errors, it is just that the "rule" does not run, when I mean "nothing" I mean
that the rulle does not run, it does not delete the spam in the junk folder.
No boxes open, nothing happens, like I did nothing.

I guess it just can't be done with a macro, thatnks for trying anyway, I'll
just have to do it manually, which is a real pain, but so be it.
 
D

DLGolfs

What are values of the vairables? Is there a way to see that?

All I know is if I run it and/or brekapoint it , then it either does
nothing, that is litterally nothing happens OR it opens VB and shows me the
first line in yellow
 
K

Ken Slovak - [MVP - Outlook]

Open the Locals window, that will show all variables in scope and their
values. I mentioned that earlier in the thread.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top