Open Outlook mail Item using EntryID, StoreID, and / or PR_ENTRYID

Kyland Holmes picture Kyland Holmes · Sep 16, 2011 · Viewed 23.8k times · Source

NOTE: I'm using VBA and Office 2007. (I would use C#, but the project parameters don't allow this)

I'm attempting to find some method in Outlook, or an API, that will allow me to open an Outlook mail item by providing either the Outlook EntryID or the MAPI "PR_ENTRYID" property from an Access Database. I have found many references to said code, but I have never seen anyone actually post a solution. I have attempted in include references to mapi32.dll and OLMAPI32.dll, but I get the following error: "Can't add a reference to the specified file." I'm guessing this is because those dll's are meant for .NET.

Any help you can give would be greatly appreciated.

Answer

Dmitry Streblechenko picture Dmitry Streblechenko · Sep 16, 2011

Use Namespace.GetItemFromID. Note the second parameter (store id) is optional. You can omit it if the store in question was already touched by Outlook is in the current session. If not, Outlook will raise the "unknown entry id" exception. If the store entry id is specified, Outlook will open it first, and the store provider will have a chance to register its entry ids with the MAPI system.

set App = CreateObject("Outlook.Application")
set NS = App.GetNamespace("MAPI")
NS.Logon
set Msg = NS.GetItemFromID(EntryID)
MsgBox Msg.Subject