Create a macro in Outlook to run a rule

K

Ken Slovak - [MVP - Outlook]

It's not a matter of what programming I want, it's if you want your code to
work you have to debug it. All programming requires that. No one can do it
for you. I think it could work, but things need debugging.
 
D

DLGolfs

I am sorry, I did not mean that you should debug it; I just don't know what I
am doing. I went to 'help" and found out what the 'locals window" is. b/c I
did not kow what it was.
I thought that I could copy /paste the result in this e-mail but I do not
see an avenue to do that.

So, I ran it w/o breaks and it just shows this but, this is probably not
helpful:

ONs nothing Name space
Ostore nothing store
colrules nothing rules
orule nothing rule

then when I put a breakpoint at the end of the set colrules o store linee,
it gives me a ton of lines, what should I look for? Most have "+" signs and
I able to expand it

At least I understand now what you want me to do.
 
K

Ken Slovak - [MVP - Outlook]

If you looked at locals when the code had finished they would all be Nothing
(null). What you want to do is to put the breakpoint on the line after
colRules is set.

You should then see valid objects for NameSpace, Store and Rules objects.
For example instead of Nothing you'd be able to expand the value and see
settings such as Name.

That tells you the base objects you need are all set. Then using F8 to step
the code one executable line at a time you can execute that line of code and
see what other variables are doing. Does the rule you want get found and
instantiated as oRule, etc.
 
D

DLGolfs

OK, I put my cursor at the end of the line
Set colRules = oStore.GetRules()
right click, toggle , breakpoint, it turns brown,
click run and it shows

+module4 module4/module4
no variables
+ : oNS : : NameSpace/NameSpace
+ : oStore : : Store/Store
: colRules : Nothing : Rules
: oRule : Nothing : Rule

So I don't see Namespace, store and rules, I see what is above.

Now what? I cannot expand colRules or oRule there is no + sign

orules nothing
 
K

Ken Slovak - [MVP - Outlook]

So what happens if you press F8 after you hit the breakpoint? You should be
in the line after setting colRules and colRules should not be Nothing and
should now have a + that you can expand to see properties such as Count,
which should have a number. Another F8 should instantiate your oRule object
and that then should not be Nothing and should be expandable to show
properties such as Name.
 
D

DLGolfs

Ken Slovak - said:
So what happens if you press F8 after you hit the breakpoint? You should be
in the line after setting colRules and colRules should not be Nothing and
should now have a + that you can expand to see properties such as Count, THERE IS NO "PROPERTIES" AND NO "COUNT"

I GET THE FOLLOWING AND WHEN i EXPAND THE ONS THERE IS NO 'COUNT" JUST
ACCOUNTS, ADDRESS LISTS, APPLICATIONS, CATERGORIES, CURRENT USER, DEFAULT
STORE, FOLDERS MAPIOBJECT, PARENT SESSION, STORES, AND SYNCOBJECTS ...DO YOU
MEAN ACCOUNT OR COUNT? THIS IS WHAT I SEE EVERYTIME, :
- : Module4 : : Module4/Module4
: oStore : Nothing : Store
: oNS : Nothing : NameSpace
: colRules : Nothing : Rules
: oRule : Nothing : Rule
OK, THEN F8 AND IT HIGHLIGHTS THE FIRST LINE AND NOTHING CHANGES AS YOU SEE
ABOVE
THEN ANOTHER F8 AND IT HIGHLIGHTS THE SET ONS LINE AND NOTHING CHANGES AS
YOU SEE ABOVE
THEN ANOTHER F8 AND IT HIGHLIGHTS THE SET OSTORE LINE AND AGAIN NOTHING
CHANGES AS YOU SEE ABOVE AND SO ON
IF SOMETHING IS CHANGING IN THE EXPANSION, IT WOULD IMPOSSIBLE FOR ME TO
TELL UNLESS YOU DIRECT ME TO A CERTAIN PLACE

which should have a number WHERE?
.. Another F8 should instantiate your oRule object
 
K

Ken Slovak - [MVP - Outlook]

In case you didn't know it all caps is hard to read and is considered as
shouting.

I have no idea what's going on. If you never get valid NameSpace, Store or
Rules collection objects obviously the code will never fire the rule. But
the code to get those objects should just work.

You are running this in Outlook 2007, with nothing in the code other than
what's been shown, and no errors are fired?

Select Tools, Trust Center and select the Macro Security tab. What is the
setting there? What about on the Programmatic Access tab?

Something is drastically wrong with your setup or there's something going on
that we're not being told about. Otherwise at minimum the line setting
NameSpace would work.
 
D

DLGolfs

Well , I answered you some time ago so I guess you have given up on me.
Sorry I don't know how to program, I put what you wrote and it did not work.
I really thought that is what the disussion groups are for, to help people
like me who know nothing about programming. I guess I'll have to try someone
else to give me the answer.

If you were offended by the CAPS, then I don't kow what to say about that!
WHy would I do someone to offend someone who is helping me? Truth is, i
wouldn't.
Oh well so be it.
 
K

Ken Slovak - [MVP - Outlook]

I had answered each one of your posts. Then you started a new thread and I
figured you decided to try to get answers from someone else. So I left that
thread alone.

I'm certainly willing to continue to try to help, but I'm really at a loss.
As I said in my last post, other than the information about caps, which did
not offend me:

I have no idea what's going on. If you never get valid NameSpace, Store or
Rules collection objects obviously the code will never fire the rule. But
the code to get those objects should just work.

You are running this in Outlook 2007, with nothing in the code other than
what's been shown, and no errors are fired?

Select Tools, Trust Center and select the Macro Security tab. What is the
setting there? What about on the Programmatic Access tab?

Something is drastically wrong with your setup or there's something going on
that we're not being told about. Otherwise at minimum the line setting
NameSpace would work.

The first thing, before any rules stuff, is that you should be getting a
valid NameSpace object. If you aren't then something is drastically wrong
that must be corrected before any of your code will run at all. I'd be
curious about the security settings as I asked, and I'd also be curious to
see if you are running an anti-virus program that maybe is breaking code
with a script stopper.
 
D

DLGolfs

Ken:
First, I went to someone else b/c I left my reply on 3/16 and had not heard
anyting and gave up on 3/22, that is why I tried someone else.

Secondly, I gave you all these security settings already in an earlier post.
from 3/16 but here it is again: So I'll do it this way:
Yes, OUtlook 2007, no errors, when I run the macro through OUtlook, it opens
VB and highlights the Setcol Rules line, that is it, not errors

Programming says "warn me about suspicious.....(recommended)"

Warnings for all macros
Warn me about suspecious activity when my , etc etc
Bottom line, is that you wrote the program, not me, and I used a lot of time
to figure out what you were asking and tried to answer the best of my
ability. I gave up b/c I had not heard from you in 6 days, hey maybe you
were on vacation, but I just figured you got pissed off and was frustrated
that I was SO dumb about this.

My rule runs fine manually, it is call Delete Spam, I copied and pasted your
programming into VBA, enabled macros. Opened the junk folder, clicked on
macros, run the delete spam macro and all it does is highlight my first
e-mail in the junk folder, no errors nothing.

So maybe delete everything and start over. I have not gotten a response
from my other posts, just ignored me, oh well, so be it.
So whatever you want to do is fine with me.


You wrote:

The first thing, before any rules stuff, is that you should be getting a
valid NameSpace object. I If you aren't then something is drastically wrong
that must be corrected before any of your code will run at all. I'd be
curious about the security settings as I asked, and I'd also be curious to
see if you are running an anti-virus program that maybe is breaking code
with a script stopper.
I don't know what a valid NameSpace object looks like
I do run an anti-virus program called Avira, I can look to see if it is
stopping scripts but doubt it b/c I would have other indications of this,
don't you think?
Sorry about all this, but I just thought that you had given up on me!
 
K

Ken Slovak - [MVP - Outlook]

I have no idea what's wrong. From what you've said none of the object such
as NameSpace or the Rules collection are ever anything other than Nothing.
That's why the code isn't running, but I don't know why. I've never seen any
situation like what you describe.

Let's see if we can get any code to run at all. Put this in the same code
module you have your rules code:

Sub Test
MsgBox "This is a test"
End Sub

Put your cursor on the MsgBox line and press F5. Do you get the MsgBox
dialog?
 
D

DLGolfs

Here is what I have in the VBA:
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

Sub Test()
MsgBox "This is a test"
End Sub

When I put the cursor at the new sub Test() it runs and a dialog box opens
that says "this is a test"
When I put the cursor at the beginning of subrunrule, then it gives me a 438
error, I hit debug and highlights the setcolrules line in the second section.

Hope that helps you
 
K

Ken Slovak - [MVP - Outlook]

OK, so at least some VBA code can run.

Let's try adding additional testing and error handling to see more of what's
going on here. I'm still mystified as to what's happening. You are running
in Outlook 2007, correct?

Sub RunRuleDeleteSpam2()
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")
If Not (oNs Is Nothing) Then
Set oStore = oNS.DefaultStore
If Not (oStore Is Nothing) Then
Set colRules = oStore.Rules()
If Not (colRules Is Nothing) Then
Set oRule = colRules.Item("Delete Spam")
If Not (oRule Is Nothing) Then
oRule.Execute
Else
MsgBox "Rule Delete Spam is nothing"
End If
Else
MsgBox "Rules collection is nothing"
End If
Else
MsgBox "Default Store is nothing"
End If
Else
MsgBox "NameSpace is nothing"
End If
End Sub

Try this new code that provides a little more information. I don't think it
will work or help though, I think something very odd is going on that might
not be possible to figure out via newsgroup posts.
 
Joined
Sep 8, 2012
Messages
1
Reaction score
0
Hi Ken,

I'm trying to do the same thing as the previous poster - I get a slightly different error, if you have 5 mins to look at it would be very grateful. My code is :

Sub Tidy()

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.GetRules()
Set oRule = colRules.Item("RS")
oRule.Execute

End Sub

I have this hooked up to a button in the outlook toolbar. When I hit the button I get :

Run-time error '-2147352567 (80020009)':

This store does not support rules. Could not complete the operation.

I'm running Outlook 2007 on XP SP3, with an AVG plugin. Disabling the plugin doesn't change this error.

Thanks for any help you can offer,

Nick
 

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