View Single Post
  #2  
Old March 23rd 09, 01:41 PM posted to microsoft.public.outlook.program_addins
Ken Slovak - [MVP - Outlook]
external usenet poster
 
Posts: 5,848
Default Outlook 2003/2007 Rule and Conditions for InBox VBA customization

A rule can call a script, which is a macro Sub with a signature that accepts
a passed MailItem. There can be no return value from a Sub, you'd have to
set a global variable.

In the context of Outlook VBA there is an Application object that always
refers to Outlook.Application.

To see the properties/methods/events exposed for any Outlook object use the
Object Browser (F2 in the Outlook VBA project). It's all in one place and
there's help available on any method/property/event by clicking F1 on
something in the Object Browser.

Unless you are using only Outlook 2007 you cannot define rules using code.
For Outlook 2007 you can use the new Rules collection, but what's available
there may or may not meet your needs. You'd have to see.

There may not be a code sample for everything you want, but there are
certainly all the bits and pieces. You can search at www.outlookcode.com for
samples covering the various pieces you want.

There is no way to run a rule at a timed interval in any version of Outlook.
You would need to use some sort of timer control to activate your code,
which would then have to call VBA macros to do the processing. If you have
VB6 installed you can put a timer control from that environment into a VBA
UserForm, otherwise you'd need to probably use a Win32 API timer class. You
can google for code that does that using VB6 at VBAccelerator.com, some
translation from VB6 to VBA would be required.

Once you have a timer established how you proceed from the timer event
handler depends on your Outlook version.

If you are using Outlook 2003 you can't call a rule from code so you'd need
to code things entirely without using rules.

For Outlook 2007, assuming that the available Rule object model can do what
you want you can instantiate a Rule object for that rule and call its
Execute method to execute the rule.

If the Rule object model can't do what you want you're back to pure VBA
code, without using rules at all.

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007.
Reminder Manager, Extended Reminders, Attachment Options.
http://www.slovaktech.com/products.htm


"GreyCoderII" wrote in message
...
I would like Outlook to periodically examine my inbox items to do some
automated cleanup. Unfortunately the basic functionality of Rules Wizard
does
not provide the two Conditions and Time interval setting I need to test to
apply an action. So I believe I must write a VBA Script to perform the
actions.

Outlook (out of the box) seems to be missing ability to set conditions on
any of the MailBoxItem properties (only some...) , and is missing a Check
Messages Periodically interval where Check either when arrive or when sent
exists.

I want to daily (After midnight) check all InBox items that are from
certain
addresses (condition for rule exists), AND where the Item Property is
MailBoxItem.UnRead (does not exist in selection conditions presently) ,
and
the Item.DateReceived is 7 days from todays date ie: item is older than
7
days, and then Move the item to another folder (Action can be set in
current
Rules choices)

I am not VB/VBA programmer but I have done a little VB work , There are
no
samples (or MS documentation) around that define all of the pieces I
require
to write the Macro.
1) How to define and add new Conditions to existing Outlook Rule condition
choices?
2) How to Return a Boolean result from a Macro to be used in Rule
condition
/action testing? ie: Return (Item.UnRead = True) ?? probably obvious to a
VB
programmer .
3) What are the arguments required I assume MailBoxItem is passed as input
argument to all VBA Macros/Scripts called from OutLook client, it's weakly
documented.
4) How to set Rule execution interval to daily , and Inbox iteration?
5) What are all the properties of MailBoxItem ( I actually think it's out
there in bits and pieces.) I found UnR
6) What is the environment the VBA rule runs under ie: Context is already
in
Application.Inspector or something or do all objects
Outlook/Application/Inspector etc.. need definition (Dim... As) as well as
Set (... = ???) for useage (This is probably obvious to a VB programmer..

Perhaps I will have to write an extension or Add in instead ?? seems silly
... but.

Any help on how to write a rule to do what I want is appreciated.
GC


Ads