vba - 使用 EntryID、StoreID 和/或 PR_ENTRYID 打开 Outlook 邮件项目

标签 vba outlook exchange-server mapi mailitem

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

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

如果您能提供任何帮助,我们将不胜感激。

最佳答案

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

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

关于vba - 使用 EntryID、StoreID 和/或 PR_ENTRYID 打开 Outlook 邮件项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7438219/

相关文章:

vba - PowerPoint VBA : which command (or a set of commands) would create ppt frames out of my . jpg 图片?

vba - 检查 VBA 中的数据类型

vba - 如何在不影响缩进的情况下更改范围的垂直对齐方式?

vba - 如何将路径从 "specialfolders(16)"更改为 C 盘上的 XYZ 文件夹?

c# - 如何读取 de Exchange 数据库?

vba - 来自网页的消息。 : 1行出现堆栈溢出

excel - 使用 Outlook VBA 将电子邮件复制到剪贴板

css - Outlook 中的表格宽度过大

c# - Exchange Web 服务附件集合为空

exchange-server - 如何从 Exchange Web 服务 (2010 SP1) 发送 HTML(多部分/替代)