Vba 使用EntryID、StoreID和/或PR\u EntryID打开Outlook邮件项目

Vba 使用EntryID、StoreID和/或PR\u EntryID打开Outlook邮件项目,vba,outlook,exchange-server,mapi,mailitem,Vba,Outlook,Exchange Server,Mapi,Mailitem,注意:我使用的是VBA和Office2007。(我会使用C#,但项目参数不允许这样做) 我试图在Outlook或API中找到某种方法,通过提供Outlook EntryID或Access数据库中的MAPI“PR_EntryID”属性,可以打开Outlook邮件项目。我已经找到了许多对上述代码的引用,但我从未见过有人真正发布解决方案。我已尝试包含对mapi32.dll和OLMAPI32.dll的引用,但出现以下错误:“无法添加对指定文件的引用。”我猜这是因为这些dll是针对.NET的 非常感谢您提

注意:我使用的是VBA和Office2007。(我会使用C#,但项目参数不允许这样做)

我试图在Outlook或API中找到某种方法,通过提供Outlook EntryID或Access数据库中的MAPI“PR_EntryID”属性,可以打开Outlook邮件项目。我已经找到了许多对上述代码的引用,但我从未见过有人真正发布解决方案。我已尝试包含对mapi32.dll和OLMAPI32.dll的引用,但出现以下错误:“无法添加对指定文件的引用。”我猜这是因为这些dll是针对.NET的


非常感谢您提供的任何帮助。

使用
名称空间。GetItemFromID
。注意,第二个参数(存储id)是可选的。如果Outlook已在当前会话中触及相关存储,则可以忽略它。否则,Outlook将引发“未知条目id”异常。如果指定了存储条目id,Outlook将首先打开它,存储提供程序将有机会在MAPI系统中注册其条目id

set App=CreateObject(“Outlook.Application”)
设置NS=App.GetNamespace(“MAPI”)
登录
set Msg=NS.GetItemFromID(EntryID)
MsgBox Msg.Subject
对于C#:


其中OutlookApp具有Microsoft.Office.Interop.Outlook.\u应用程序类型。

谢谢Dmitry-这是一种享受。我到处寻找这个答案!
var ns = OutlookApp.GetNamespace("MAPI");
var item = ns.GetItemFromID(entryId) as MailItem;