Making Outlook Work

For the most part, Outlook works just fine. Of course, my acceptance of the functional level of this Microsoft product probably stems from many years of being forced to use Lotus Notes. Anything works just fine in comparison.

However, there are a few niggles which really annoy me. One is that the default time for snoozing a meeting reminder can’t be changed. Well, can’t be changed to what I want it to be. It only takes one minute to get to a meeting, and there’s no point in getting to a meeting more than one minute early. If I get reminded 5 minutes before the meeting, I tend to think “Right – I have two or three minutes to get this finished quickly, and then go”. But I have this tendency to get lost in what I’m doing, and occasionally find myself rushing to a meeting 10 minutes late. So when the initial reminder comes up, I want to hit Snooze, and be reminded exactly 2 minutes before my meeting.

The other issue is when you delete a pointless email (such as a meeting acceptance, or those overly polite people that send back an email saying “Thanks” in response to everything you do), it shows up in Deleted Items and gives it an unread count. In Bold. I hate seeing an unread count. It means that there’s something there that needs my attention. Except that it doesn’t. Grrrr.

I used to use AutoHotKey to deal with the former. And grit my teeth on the other one. But I’m not allowed to install AutoHotKey on my work machine now, and gritting teeth on two problems is detrimental to my dental bills. So I spent a bit of time this week getting to grips with Outlook VBA, and have solved both issues.

This bit marks anything in the Deleted Items folder as read anytime Outlook does just about anything:

Private Sub Application_ItemLoad(ByVal Item as Object)
    Call MarkDeletedAsRead
End Sub

Sub MarkDeletedAsRead()
' goes through the Deleted Items folder, and marks all as read

Dim fld As Folder
Dim itm As Object

Set fld = Session.GetDefaultFolder(olFolderDeletedItems)

For Each itm In fld.Items
    On Error Resume Next
    If itm.UnRead = True Then
        itm.UnRead = False
    End If
Next itm

End Sub

And this bit ensures that when you press the Snooze button, it sets the snooze time to x minutes before the meeting (where x can be set by applying a different value to TimeToGetThere):

Public WithEvents objReminders As Outlook.Reminders

Private Sub Application_Startup()
' refresh reminders list on startup
    Call Initialise_Handler
End Sub

Private Sub Application_Reminder(ByVal Item As Object)
 ' refresh reminders list when a reminder window pops 
    Call Initialize_Handler
End Sub

Sub Initialise_Handler()    
    Set objReminders = Outlook.Reminders
End Sub

Private Sub objReminders_ReminderAdd(ByVal RemObj As Reminder)    Call Initialise_Handler 
End Sub

Private Sub objReminders_Snooze(ByVal RemObj As Reminder)
'Occurs when you click Snooze        

Const TimeToGetThere = 2    
Dim TimeToGo As Variant     

  ' calculate number of minutes until meeting start time    
  TimeToGo = (RemObj.OriginalReminderDate - (Date+Time))*24*60    
  ' calculate number of minutes until the next reminder    
  TimeToGo = Round(TimeToGo - TimeToGetThere,0)    
  If RemObj.IsVisible = True Then        
      RemObj.Snooze TimeToGo    
  End If

End Sub

And there you have it. Stick that in your ThisOutlookSession and save it. Problem solved. Assuming you have the same slightly nutty outlook on life that I do, you’re welcome.

This entry was posted in Technology, Workplace and tagged , , , , , . Bookmark the permalink.

2 Responses to Making Outlook Work

  1. Thomas says:

    I tried the “snooze time to x minutes” vba code but it doesn’t work 😦
    I don’t get any error message … it simply doesn’t have any impact 😦
    I’m using Outlook 2010 … could that be the issue?
    Best regards,

    • Nick says:

      The problem may be due to Outlook 2010, but I can’t verify that, as I only have access to 2007. I haven’t actually used that code for a while, as I got AutoHotKey running again, which is much more flexible. I must admit that I didn’t find this quite as foolproof as I hoped – but it did at least work more than half the time.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s