![]() |
If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|
Thread Tools | Search this Thread | Display Modes |
#1
|
|||
|
|||
![]()
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 |
#2
|
|||
|
|||
![]()
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 |
#3
|
|||
|
|||
![]()
Thank you Ken. Looks like I'll need to do some research and amalgamation of
techniques etc., the guideposts you suggested help . Should there not be a way in which I could derive and enhance existing forms and values and dialogs to add what I want?, ie: I wonder if I can wrap/derive extend existing classes in Outlook Rules Wizard (Start from Blank rule) (and add) a timer event so rule wizard lists "Check item in this folder Daily" , and Conditions for testing in Macro's Ie add a condition "If item is unread" and condition "If Item is older than n days" . I guess the timer even routine would need to examine the rules tree, etc... Perhaps I should investigate a C# Plugin and add Timer etc.. And new dialogs etc. It would just seem better to use existing UI and just add the extensions to the existing UI and classes and selection string values etc... I'll look at Outlook 2007 Rule Object model and probably only Outlook 2007 and later . "GreyCoderII" wrote: 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 |
#4
|
|||
|
|||
![]()
Those ideas are nice but they don't buy you anything, nor does a COM addin.
There's nothing you can do there that you can't do in VBA, other than use a different timer object. My guess is that you will end up having to do what I suggested. -- 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 ... Thank you Ken. Looks like I'll need to do some research and amalgamation of techniques etc., the guideposts you suggested help . Should there not be a way in which I could derive and enhance existing forms and values and dialogs to add what I want?, ie: I wonder if I can wrap/derive extend existing classes in Outlook Rules Wizard (Start from Blank rule) (and add) a timer event so rule wizard lists "Check item in this folder Daily" , and Conditions for testing in Macro's Ie add a condition "If item is unread" and condition "If Item is older than n days" . I guess the timer even routine would need to examine the rules tree, etc... Perhaps I should investigate a C# Plugin and add Timer etc.. And new dialogs etc. It would just seem better to use existing UI and just add the extensions to the existing UI and classes and selection string values etc... I'll look at Outlook 2007 Rule Object model and probably only Outlook 2007 and later . |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Custom Rule that Opens Incoming Message Meeting Conditions | Chris Dunbar | Outlook and VBA | 2 | October 15th 08 01:55 PM |
Day View Customization in Outlook 2003 | macrojunkie | Outlook - Calandaring | 2 | July 18th 08 01:59 AM |
Outlook 2007 Customization | [email protected] | Outlook - Installation | 0 | March 8th 08 04:41 PM |
Prevent customization and stationary in Outlook 2003. | Rudolf Amarlapudi | Outlook - General Queries | 0 | August 7th 06 05:51 PM |
Outlook (2007) Today Customization | dstubb | Outlook - Installation | 0 | August 3rd 06 06:08 PM |