Your code works here if and only if I don't use a second instance of
the class module where the ReminderFire event is handled.
Instantiating and calling a second instance of the class makes your
module level objects not instantiated within that second class module,
therefore they are Nothing.
That's what I was trying to explain when talking about the scope of
your objects.
Declare the class module as global in a code module:
Public OutAddIn As New clsAddIn
That's the class instance you want to use throughout your code. If you
do that you'll find your module level objects are in scope.
A reminder object within the Reminders search folder is only there
while a reminder is present on the original item. If you check you'll
see that your ReminderObject (while in the Reminders folder) is
actually the original item that has a reminder. However, even with the
reminder dismissed the original item will still exist and your
g_objReminder (and g_Item which is actually the same object) both will
still point to the original object. In your call from the timer object
you'd have to check to see that a reminder was still enabled on the
item (if not it was dismissed) and that the reminder wasn't snoozed
(that would change the reminder time).
Another thing you have to consider is reminders on contact items can
be set but you can't check on the setting using the Outlook object
model. You have to use undocumented CDO 1.21 or Extended MAPI to find
the reminder properties for a contact item.
--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Lead Author, Professional Outlook 2000 Programming, Wrox Press
Lead Author, Beginning VB 6 Application Development, Wrox Press
Attachment Options
http://www.slovaktech.com/attachmentoptions.htm
Extended Reminders
http://www.slovaktech.com/extendedreminders.htm