Replacing Reminder System--How to stop Reminders from poping up

G

Guest

I am working on a system to replace the Outlook 2003 default Reminder form. I
have the form working fine now but I am running into an unexpected problem.

When a Reminder fires, my new Reminders UserForm pops up and I can view all
active reminders. I have copied the information from all active reminders
into a parallel array that I browse and edit as needed. My current intent is
to update the Snooze value before the default Reminder has a chance to be
displayed.

But my problem is that the even though my Reminders UserForm pops up, so
does the Outlook 2003 default Reminder form. How can stop the Outlook default
Reminders form from popping up? I tried using a pause type of routine in the
ThisOutlookSession module and that sort of worked.

But then a problem comes when I am ready to update the changes to the
Reminders Objects. I am not allowed to use the .Snooze parameter because the
Reminder is not yet visible--the .IsVisible parameter returns false. And
since the Reminder is not yet displayed and therefore not yet visible, I
can't change the .Snooze() value.

If I understand what is happening, then it makes me feel like a dog chasing
it's tail. :( I don't want to see the default reminders pop up form but I
also can't change the NextReminderDate unless the default reminders are
visible.

And if I understand how Reminders are changed, the NextReminderDate
parameter cannot be changed directly. The ONLY way to change the next time
the Reminder will pop up is by recalculating and modifying the .Snooze value.

I am sure I must be doing something wrong. And my best guess so far is that
it has something to do with the way I am calling my replacement Reminder
UserForm routines. I see something in Help that points towards setting up a
Class Module with code something like:

Public WithEvents objReminders As Outlook.Reminders
Sub Initialize_handler()
Set objReminders = Application.Reminders
End Sub
Sub objReminders_ReminderFire(ByVal ReminderObject As Reminder)
'Opens the item when a reminder executes
ReminderObject.Item.Display
End Sub

Is that what part of what I should be doing?
If not, then what? And ideas or suggestions sincerely appreciated!

Bill Molony
 
K

Ken Slovak - [MVP - Outlook]

You can use BeforeReminderFire with its Cancel argument, as I mentioned
previously, to cancel the display of the Outlook reminders window. Once you
do that of course no reminder event would occur for that item. So you'd have
to then get the Reminders collection and iterate it to see which items were
due. You can change snooze or you can change FlagDueBy to change when the
reminder will fire. Of course FlagDueBy is not exposed for all item types,
so you must use undocumented MAPI properties to get at it for all types of
items. Recurring items are a major problem with that, since you have to get
the recurrence collection and then find the correct item within that and the
Exceptions collection.
 

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