1

我目前正在使用带有 Exchange MAPI 帐户的 Windows 7、Outlook 2010。几个用户有他们的个人帐户+几个通用帐户(一些具有完全访问权限,一些是只读的)用户在 VBA 中执行一个宏以连接到特定的邮件地址/帐户以阅读检查来自不同标准的收件箱中的传入邮件。

此代码片段连接到 MAPI 帐户并将文件夹设置为邮件帐户的收件箱:

Dim ns As Outlook.NameSpace
Dim Inbox As Outlook.Folder
Set ns = GetNamespace("MAPI")
Set Inbox = ns.Folders.Item("jon.doe@example.com").Folders("Inbox")

现在 IT 决定将他们的服务器升级到 Exchange 2016。这些帐户将不会使用MAPI. IT 表示他们现在使用REST API.

我想这就是为什么我现在在使用 Outlook 和 Exchange 2016 以及现在的 Windows 10 执行上述代码时收到此错误消息的原因。 VBA 运行时错误

我在网上找到了几个解决方案,但都需要 Visual Studio + Addins/Libraries。我想用 VBA 做到这一点,并连接到一个邮件帐户和收件箱,所以没有 Visual Studio、C#。

此致

扬科

4

1 回答 1

0

现在 IT 决定将他们的服务器升级到 Exchange 2016。这些帐户将不使用 MAPI。IT 表示他们现在使用 REST API。

这在技术上不正确 Exchange 2016 尚不支持新的 Outlook Rest API(尽管已宣布将在未来引入)。如果您使用 Office365,则可以使用 REST。另一种适用于任何版本的 Exchange 的替代方法是使用 EWS https://msdn.microsoft.com/en-us/library/office/dn567668(v=exchg.150).aspx

另外需要指出的是,无论是 Exchange 版本 2010、2016 还是 Office365,Outlook 都使用 MAPI 连接到 Exchange(以及 EWS 的各种功能)。版本之间的区别在于连接方法,例如在 2016 年,默认情况下 Mapi over HTTP 是以前版本中首选的连接机制,即 RPC/HTTP (Outlook Anywhere)。它是相同的协议,只是传输方式不同,但从 Outlook 代码/客户端的角度来看,一旦创建了配置文件并建立了连接,它就相对透明。一件行不通的事情是尝试直接 RPC/Mapi 连接到 Exchange 2016(或 2013)。理论上,如果所有邮箱都托管在同一个组织中,但你的 IT 部门是什么,你的 VBA 代码应该仍然有效告诉你不是

于 2016-06-16T02:42:58.897 回答