Outlook – In Outlook2010, is there a way to view the currently snoozing reminders

calendarmicrosoft-outlookmicrosoft-outlook-2010

Is there any way in Outlook 2010 to pull up a list of items that are currently snoozed? For example, let's say two weeks out I set a reminder to pop up on Friday for an important lunch meeting the following Monday (I like to be reminded of Monday tasks before the weekend). When the reminder pops up on Friday, I snooze it for three days so that it will pop up again right before lunch on Monday. Then Monday rolls around and my memory is fuzzy and I'm a bit paranoid that I accidentally dismissed the reminder on Friday instead of correctly snoozing it. I can still see the original appointment on my calendar, but I need to ensure that I'm actually going to have the reminder pop up when I expect it to so that I don't miss my meeting.

Is there any way in Outlook 2010 to pull up a list of the reminders that are currently snoozed? This would also be helpful for those cases where I complete a task whose reminder I had snoozed until later, and I now want to pull up the snoozed reminder and cancel it.

Best Answer

Sub SnoozedReminders()

' http://www.jpsoftwaretech.com/check-your-outlook-reminders-in-vba/

Dim MyReminder As Outlook.Reminder
Dim MyReminders As Outlook.Reminders
Dim Report As String
Dim i As Long

Set MyReminders = Outlook.Reminders

i = 0

For Each MyReminder In MyReminders

    If HasReminderFired(MyReminder) = True Then
        i = i + 1
        Report = Report & i & ": " & MyReminder.Caption & vbCr & _
            "     Snoozed to " & MyReminder.NextReminderDate & vbCr & vbCr
    End If

Next MyReminder

CreateReportAsEmail "Snoozed Items", Report

End Sub


Function HasReminderFired(rmndr As Outlook.Reminder) As Boolean
    HasReminderFired = (rmndr.OriginalReminderDate <> rmndr.NextReminderDate)
End Function


' VBA SubRoutine which displays a report inside an email
' Programming by Greg Thatcher, http://www.GregThatcher.com

Public Sub CreateReportAsEmail(Title As String, Report As String)

    On Error GoTo On_Error

    Dim Session As Outlook.Namespace
    Dim mail As MailItem
    Dim MyAddress As AddressEntry
    Dim Inbox As Outlook.folder 

    Set Session = Application.Session
    Set Inbox = Session.GetDefaultFolder(olFolderInbox)
    Set mail = Inbox.items.Add("IPM.Mail")

    mail.Subject = Title
    mail.Body = Report

    mail.Save
    mail.Display

Exiting:
    Set Session = Nothing
    Set Inbox = Nothing
    Set mail = Nothing
    Exit Sub

On_Error:
    MsgBox "error=" & Err.Number & " " & Err.Description
    Resume Exiting

End Sub

If you are unfamiliar with VBA see Slipstick's explanation page. You will find information about:

  • macro security settings;
  • where to put the code (You can use a regular module with Insert | Module); and
  • how to create a button.
Related Question