9

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

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

您可以提供的任何帮助将不胜感激。

4

2 回答 2

23

使用Namespace.GetItemFromID. 注意第二个参数(store id)是可选的。如果当前会话中 Outlook 已触及相关存储,则可以省略它。如果不是,Outlook 将引发“未知条目 id”异常。如果指定了商店入口 id,Outlook 将首先打开它,商店提供者将有机会将其入口 id 注册到 MAPI 系统。

set App = CreateObject("Outlook.Application")
set NS = App.GetNamespace("MAPI")
NS.Logon
set Msg = NS.GetItemFromID(EntryID)
MsgBox Msg.Subject
于 2011-09-16T02:31:18.413 回答
3

对于 C#:

var ns = OutlookApp.GetNamespace("MAPI");
var item = ns.GetItemFromID(entryId) as MailItem;

其中 OutlookApp 具有 Microsoft.Office.Interop.Outlook._Application 类型。

于 2013-03-13T12:24:10.870 回答