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を使用することです。

指摘すべきもう 1 つのことは、Exchange バージョン 2010、2016、または Office365 に関係なく、Outlook は MAPI を使用して Exchange に接続することです (さまざまな機能の EWS と共に)。バージョン間の違いは接続方法です。たとえば、2016 年のデフォルトでは Mapi over HTTP が、RPC/HTTP (Outlook Anywhere) であった以前のバージョンの優先接続メカニズムです。同じプロトコルでトランスポートが異なるだけですが、プロファイルが作成されて接続が確立されると、Outlook コード/クライアントの観点からは比較的透過的です。うまくいかないことの 1 つは、Exchange 2016 (または 2013 については 2013) への直接 RPC/Mapi 接続を試みることです。理論的には、すべてのメールボックスが同じ組織でホストされているが、IT 部門が何であるかによって、VBA コードは引き続き機能するはずです。あなたがそうではないことを言っています'

于 2016-06-16T02:42:58.897 に答える