Reminder.Snooze is one method you can try for changing the reminder time and
not an appointment start time. You can also sink the
Reminders.BeforeReminderShow event and set the Cancel argument to True to
cancel display of a reminder.
The Reminder item itself is actually the item with the reminder. So any
changes you make to it will be in the original item. For some types of items
you can set the reminder time directly (MailItem.FlagDueBy,
TaskItem.ReminderTime). For other types of items FlagDueBy is not available
in the Outlook object model (appointments and contacts). For those items
you'd have to use CDO 1.21 or Extended MAPI (C++ or Delphi only) or
Redemption (
www.dimastr.com/redemption) to get at that property. That's what
needs to be changed to change the reminder time without changing the actual
start time.
Recurring items are another thing to watch for. Changing the reminder time
of a recurring appointment (or its start time) will create an Exception in
the Exceptions collection of the recurring appointment. You have to make
sure you get the actual current recurrence and not the master appointment.
--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Absolute Beginner's Guide to Microsoft Office Outlook 2003
Reminder Manager, Extended Reminders, Attachment Options
http://www.slovaktech.com/products.htm
"Bill Molony" <(E-Mail Removed)> wrote in message
news:B4828BC4-66BE-4CEE-84D2-(E-Mail Removed)...
> Hi Ken,
>
> Thanks for the response!!! I reviewed your Reminder Manager. Seems like an
> excellent application with lots of nice bells and whistles. But
> unfortunately
> that does not do what I am looking for.
>
> What I would like to see is actually a much simpler solution. I just want
> an
> easier way to reset the reminder's date and time to pop up without having
> to
> use the simplistic combo box provided on the default reminder pop up form.
> I
> already had a pretty good idea the default Reminder form itself was going
> to
> be hard coded and inaccessible. So I also knew that whatever I came up
> with
> would almost certainly have to be a replacement for it.
>
> But since I first posted this request I have done a bit more experimenting
> with the way Reminders are handled in Outlook. For one thing, in the
> "ThisOutlookSession" built-in standard module, I found that the sub
> procedure
> "Sub Application_Reminder()" which is automatically called before the
> reminder is even displayed.
>
> That gives me a hook that will allow me to programmatically access the
> Reminders' related Appointment Item. Having access to that allows me to
> change the reminder's item's start field's date/time. Experimentation
> confirmed that changing ".Start" to a future date/time will automatically
> cancel the reminder even before it appears. So I am sure that is the
> beginning point for my solution. But I can already see that method is
> going
> to be a rather crude way of handling it. I really don't want to change the
> Appointment Item itself if at all possible--even programatically.
>
> What I really need is a way to access the reminder itself. Some further
> experimentation led me to the following generalized code:
> Dim OutlookApp As Outlook.Application
> Dim OLRemindersALL As Outlook.Reminders
> Dim i As Integer
> Set OutlookApp = New Outlook.Application
> Set OLRemindersALL = OutlookApp.Reminders
> For i = OLRemindersALL.Count To 1 Step -1
> With OLRemindersALL(i).Item
> Debug.Print i; .Start; OLRemindersALL(i).Caption
> ....
>
> That allowed me to list all reminders both visible (current) and invisible
> (future). But what I haven't yet discovered is how to change the
> reminder's
> parameters directly without changing the related Appointment Item.
>
> How do I change the Reminder's date/time without changing the Item's
> .Start
> value. If I could change that programatically before the Reminder appears,
> then the reminder would automatically change from visible to invisible
> with a
> new future reminder date/time. I believe that is going to be one part of
> the
> solution.
>
> For the other half of the solution, I have also done some work with
> creating
> a form to use as a replacement for the Reminder form. I used a default
> Appointment form as a base and marked all of the standard pages as hidden.
>
> Then on the one blank page I marked as visible, I created user defined
> fields to capture user input for the future reminder date/time--field
> names
> like MM, DD, YYYY, HH, MM, AMPM. I intend to build some code to capture
> key
> strokes in those fields and maybe use the "+" and "-" keys to allow the
> user
> to increment/decrement the value in these fields. Once an "Ok" command
> button
> is pressed to save the values, I would contatenate the field values to
> build
> a date/time and use that to change the Reminder date/time. So I feel that
> will probably be the other half of the solution.
>
> I am only guessing at this point that I will be able to combine all that
> together to get the final result I want. If you have any ideas along this
> line--or possibly more importantly, defnitive reasons why this won't
> work--I
> would most certainly appreciate it.
>
> Bill Molony