How do you get a reference to the mail item in the current open window in Outlook using VBA?

Matt Connolly picture Matt Connolly · Nov 9, 2010 · Viewed 15.4k times · Source

I have a macro that works very well to place into folders / apply flags / set categories, but it only works on the current item selected in the explorer.

When I get an email alert on my desktop and click on it to open the email message, I would like to be able to run the same macro against that open item, but I can't find any documentation on how to access that object in a similar way to how I access the selected item in the explorer list.

My current selection logic looks like this:

Dim Item As Object
Dim SelectedItems As Selection

Set SelectedItems = Outlook.ActiveExplorer.Selection
For Each Item In SelectedItems
    With Item
        'do stuff
    End With
Next Item

Answer

Matt Connolly picture Matt Connolly · Nov 9, 2010

Apparently this is the code to get the current open item:

If TypeName(Application.ActiveWindow) = "Inspector" Then
    Set Item = Application.ActiveWindow.CurrentItem