Outlook で画面の表示が乱れる現象が発生する場合の対処方法

 

Outlook を長時間 (環境によっては数時間) 使用し続けると、以下のような現象が発生する場合があります。

  • リボンなどのボタンの表示がされなくなる
  • メールの本文が空白になったり、黒く表示される
  • ナビゲーション ウィンドウのフォルダーが表示されなくなる
  • UI が四角だけで表示される

多くの場合、この現象は画面描画のためのメモリ確保が行えずに発生します。
この記事では、メモリ不足による画面描画を解消するためのいくつかの方法をご紹介します。

OST や PST から不要なアイテムを削除、移動し、使用していない PST をプロファイルから削除する

多くの場合、Outlook では OST や PST というメールを保存するためのファイルを開いています。
これらのファイルは Outlook の起動中には常に開かれた状態となっており、メールの読み書きに伴ってランダムにアクセスされます。
環境によっては一つの OST/PST のサイズが数ギガとなり、さらには複数の PST を同時に開くというようなこともあるでしょう。
そして、現在開いているフォルダーやメールのデータだけでなく、バックグラウンドで処理される動作などによりファイルのデータがメモリ上にキャッシュされ、メモリが大量に使用される動作となります。

したがって、メモリの使用量を抑えるには、普段使用している OST や PST のアイテムの量を減らし、使用していない PST はプロファイルから削除してしまうというものが考えられます。
パフォーマンス上の指標とはなりますが、以下のマイクロソフト技術情報では一つのフォルダーには 10 万アイテム、一つの PST には 500 フォルダーまでが正常な動作範囲というものがあります。

2768656 Outlook performance issues when there are too many items or folders in a Cached mode .ost or .pst file folder

一つのプロファイルあたりどのくらい PST を使えるのかという情報がちょっと見当たらないのですが、結局のところ PST の数というより、すべての PST のサイズを合計してどの程度になるのかという観点で考えたほうが良いかもしれません。

ハードウェア グラフィック アクセラレータを有効にする

Office 2013 以降の Office 製品では、DirectX によるハードウエア グラフィック アクセラレータを使用して画面描画が行われています。
これにより高速な画面描画ができるようになったのですが、一部のアクセラレータで正常な動作が行われない場合があり、[ハードウェア グラフィック アクセラレータを無効にする] をオンにしてアクセラレータを無効にするという方法が問題の対処として実施されている場合があります。
しかし、アクセラレータを無効にすると、画面描画をソフトウェアで実行するため、メモリの使用量が若干増えるようです。

Office 2013 のリリースから 4 年経過し、Office 自体やビデオドライバーの改善により問題が解消されている可能性もありますので、以前何らかの理由で [ハードウェア グラフィック アクセラレータを無効にする] をオンにしていた場合、最新の Office の修正プログラムやグラフィック カードのデバイス ドライバーを適用してアクセラレータを有効にすることで、メモリ消費を抑え、かつ高速に画面描画ができるようになるかもしれません。

高解像度のディスプレイでは DPI を 200% 以上に設定する

最近では高解像度のディスプレイを持つノート PC が普及していますが、このような環境では画面上に表示される情報量が増え、それに伴ってメモリの消費量が増える結果となります。
一例では、1600 x 1200 ピクセルのディスプレイで全画面表示した場合のメモリ消費量が 8 メガバイトあるのに対し、3840 x 2160 ピクセルのディスプレイで全画面表示した場合には 4 倍の 32 メガバイトになったというものがあります。
そのため、高解像度のディスプレイでは DPI を 200% 以上とし、画面に表示される情報量を減らすことでメモリの消費量を抑えることができます。
なお、同様の理由でマルチモニターでの使用や、ウィンドウを多数開くような使用もメモリ消費を増やす原因となりますので、このような使用方法も避けたほうがよいでしょう。

タッチでメッセージのスクロールを行わないようにする

最近のノート PC ではタッチスクリーンが当たり前のようになり、メッセージのスクロールもタッチ操作で行うことができます。
しかし、タッチ操作でスクロールを行うと、メモリの消費が多いという情報があります。
そのため、スクロールはマウスやキーボードで行ったほうが良いようです。

不要なアドインを無効化または削除する

プレインストールで Office がインストールされているような場合、同時にサードパーティ製の Outlook のアドインがインストールされていることがあります。
これらの中には便利なものもあるのですが、最初からインストールされているだけで使ったこともないというようなものもあるでしょう。
不要なアドインを無効化または削除すれば、Outlook のメモリ使用量も抑えることができ、アドインに起因するパフォーマンスの問題なども改善されるかもしれません。

なお、マイクロソフトの Outlook のアドインには以下のようなものがありますが、使用していなければこれらも無効化してかまわないでしょう。

  • Microsoft Exchange Add-in (サーバーが Microsoft Exchange や Outlook.com でなければ不要)
  • Skype Meeting Add-in for Microsoft Office 201X (Skype for Business を使用していなければ不要
  • Microsoft IME Outlook アドイン (連絡先アイテムの姓名フリガナを IME に自動登録しないなら不要)
  • Microsoft SharePoint Server Colleague Import Add-in (SharePoint の連絡先などと同期していないなら不要)
  • OneNote Notes about Outlook Items (メールを OneNote にコピーするような操作を日常的に行っていないなら不要)
  • Microsoft VBA for Outlook AddIn (Outlook のマクロを使用していないなら不要)
  • Outlook Social Connector 2016 (メールの下部に表示される人物情報ウィンドウを使っていないなら不要)

Office 2016/2013 を最新の状態に更新する

Office の共通コンポーネントや Outlook がメールの表示に使用する Word の修正には画面描画やメモリの使用に関する改善が含まれている場合があります。
したがって、Outlook だけでなく、Word や Office の最新の修正プログラムを適用することが現象改善につながるといえます。

さらに、Windows が 64 ビット版で、32 ビットの Outlook 2016 のクリック実行版を使用している場合のみの話ですが、更新チャネルを月次チャネルとして最新の状態 (Version 1709 以降) に更新すると、Outlook 2016 が使用できるメモリの量が 2 ギガバイトから 4 ギガバイトに倍増します。
これは、Windows の Large Address Aware という機能に Outlook 2016 が対応したためです。
通常、Office 2016 をインストールすると、Windows が 64 ビット版であっても、Office アプリケーションは 32 ビット版がインストールされます。
この場合、PC に 2 ギガバイトよりも多いメモリが搭載されていたとしても、32 ビット版のアプリケーションが使用できるメモリの量は最大で 2 ギガバイトに制限されます。
これは、32 ビットの環境では Windows が使用するメモリとして 2 ギガバイトが予約されていることに起因します。
しかし、Windows が 64 ビット版である場合、32 ビット環境で予約されていたメモリ空間をユーザー アプリケーションに開放する Large Address Aware というオプションがあり、Version 1709 以降の Outlook 2016 ではこれが有効となっているので 4 ギガバイトまで使用できるようになったのです。

なお、最新の状態にしても、[ファイル]-[Office アカウント] の 右側の Office ロゴの下のバージョンが 1709 以上にならない場合は、以下のマイクロソフト技術情報の [Download] をクリックして修正プログラムを実行し、更新チャネルを月次チャネルとしてください。

延期チャネルから Office 365 製品ファミリ用の現在のチャネルに切り替える方法

Office 2016 を 64 ビット版に入れ替える

前述の通り、通常は Windows が 64 ビット版であっても Office は 32 ビット版がインストールされます。
これは、アドインやマクロなどが 64 ビットに対応していない状況を考慮したものと思われます。
しかし、マクロやアドインに問題がなければ 64 ビット版にすることで、PC の搭載メモリを十分に活用した処理ができるようになります。
なお、Outlook だけを 64 ビットにするということはできないため、Office 全体をアンインストールし、64 ビット版を再インストールする必要があります。

 

参考情報:

Office 365 ProPlus 更新プログラム チャネルの概要
32-bit Outlook interface elements unexpectedly render in black, white, or blank
Large Address Aware in Outlook 2016

広告

Outlook 2016/2013 でルールによるアプリケーションやマクロの実行ができない

2017 年 5 月以降にリリースされた Outlook 2016 の修正プログラム、または 6 月以降にリリースされた Outlook 2013 の修正プログラムを適用すると、以下のような現象が発生します。

  • アプリケーションやマクロを実行するルールが (エラー) と表示される
  • 新規ルール作成で「アプリケーションを開始する」や「スクリプトを実行する」というアクションが選択肢からなくなる

これは、セキュリティ強化に伴う動作変更です。

ただし、機能が完全に削除されたわけではなく、以下のレジストリ設定を行うことで引き続き「アプリケーションを開始する」や「スクリプトを実行する」というアクションが使用できるようになります。

Outlook 2016 のキー: HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security\

Outlook 2013 のキー: HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Security\

値の名前: EnableUnsafeClientMailRules

値の種類: REG_DWORD

値のデータ: 1

– 参考リンク

How to control the rule actions to start an application or run a macro in Outlook 2016 and Outlook 2013

Outlookを操作するスクリプトを実行すると「Outlook 内に保存されている電子メール アドレス情報がプログラムによってアクセスされようとしています。」と警告が出る現象について

コメントにて以下のご質問をいただきました。


outlook2013(office365proplus)です。
ここでいろいろ参考にさせていただいて、予定表をテキストで取り出すvbsを
使っております。
数か月は問題なく使っていたのですが、最近、下記セキュリティのアラートが出るようになりました。
「Outlook内に保存されている電子メールアドレス情報がプログラムによってアクセスされようとしています。なんたら」
数分ごとに実行するようにスケジューリングしているので、事実上アラートが邪魔で使えない状況です。。
いろいろ調べたのですが、「セキュリティセンターの設定でプログラムによるアクセス」を「不審な動作に関する警告を表示しない」にする、というのしか見つかりません。(私は管理者ではないので、この項目を変更できません)
特定のプログラムを許可するようなオプションも見つかりません。
何か対策は無いでしょうか。
最近突然使えなくなったのは何かマイクロソフトで仕様変更したのでしょうか。。


メールアドレスへのアクセスの警告メッセージは、以下のような条件でスクリプトなどにより Outlook のオブジェクト モデルでメールアドレスが含まれるプロパティを参照した場合に表示されます。

  • ウイルス スキャン ソフトがインストールされていない
  • ウイルス スキャン ソフトのパターンファイルが最新でない
  • ウイルス スキャン ソフトのライセンスが切れている

これらのチェックには Windows の機能が使われており、たとえ実際にはウイルススキャンソフトがインストールされていたとしても、Windows のコントロール パネルの [セキュリティとメンテナンス] で [ウイルス対策] が有効で最新の状態になっていなければ Outlook で警告が出ます。
最近出るようになったということなのであれば、単にパターンファイルが最新でないだけではないかとも思いますが、ウイルス スキャン ソフトの状態がどうなっているかをコントロール パネルで確認してみてください。

参考:

電子メール アドレスの情報にアクセスしようとしているか、自分の代わりに電子メールを送信しようとしているプログラムに関する警告が表示される

msg ファイルとして保存しようとするとメモリ不足でエラーになる原因

コメントにて以下のご質問をいただきました。


はじめまして。これほど情報量満載のサイトがある
のを知り感動いたしました。
早速質問させて戴きたく。

Outlook2013上で所定フォルダ上のメールメッセージを
SaveAsメソッドによりディスクにmsg形式で保存する
VBAを作成していますが、メールメッセージがmsg形式
の添付ファイルを持つ場合に保存が失敗し、そこで
メモリエラーでプログラムが途中終了してしまいます。
保存の際、ディスク上に16kBのmsgファイルが出来る
のですがサイズがそこから増えることなく、エラー
「処理を実行するためのメモリが不足しています」が
出て、途中終了するとともに、上記ファイルが自動
削除されます。

【試行実験】
・msg形式での保存では、Unicodeの如何を問わず保存不能
・マニュアルで「ファイル~名前をつけて保存(msg形式)」
でも保存不能
・保存不能のケースで、TXT形式での保存は可能
・添付のmsgファイルが壊れていることはおそらくなく、
ダブルクリックで開いてみることが可能。但しそれを
保存することも同じエラーで不能。
・メールメッセージをexplorer上のD&Dしてmsg形式で
保存することは可能

【相談事項】
所定フォルダ上の複数のメールメッセージを1つずつ
msg形式でプログラムで保存したいので、
・最終的には、対象とするメールメッセージを全て保存したい
・不能なメッセージがあってもそこで途中終了せず、次の対象
の保存に取りかかれるようにせめてしたい

【参考】
添付ファイルのmsgが大きなサイズの場合に失敗するようですが、
以下には必ずしもそうでは無く沢山の相手先が設定されていると
失敗するとの話もあるそうです。もはや私には理解が及びません。
https://www.experts-exchange.com/questions/28536821/Outlook-vba-cannot-save-a-large-Msg-file-to-disk-error-2147024882-There-is-not-enough-free-memory.html
https://social.msdn.microsoft.com/Forums/office/en-US/2836370d-33dd-44fe-b480-26edcf1f6859/does-the-saveas-method-in-microsoftofficeoutlookinterop-have-a-maximum-file-size?forum=outlookdev
何卒よろしくお願いいたします。


msg ファイルがメモリ不足で保存できないという現象が発生する場合、ほとんどは msg ファイルで使用されている OLE 複合ファイルという形式の制限に起因して発生しています。

OLE 複合ファイルとは Windows で一つのファイルに様々な情報をオブジェクトという形で保存する形式のファイルです。
多くのファイル フォーマットは、特定のデータを保存するための形式であり、例えばテキスト形式なら文字列データ、JPG 形式なら画像データなどを保存します。
しかし、OLE 複合ファイルについてはどのようなデータでも保存可能とするため、データをオブジェクトという形で複数保存できるようになっています。
実際、Office 2003 までは Word も Excel も PowerPoint も OLE 複合ファイルの形式でファイルを保存しており、Word ファイルの中に Excel データの一部を埋め込んだり、拡張子を削除してもダブルクリックすると適切なアプリケーションで自動的に開いたりできていました。

Outlook も他の Office 製品と同様に OLE 複合ファイル形式で msg ファイルや oft ファイルを保存しており、メールに含まれる受信者や添付ファイルはそれぞれ個別のオブジェクトとしてファイルに格納されています。
また、メールに別のメールを添付しているという場合、添付されたメールも単一のデータではなく、そのメール自体の受信者や添付ファイルが個別のオブジェクトとして保存されます。
そのため、多数の受信者や添付ファイルを含むメールを保存する場合、一つの OLE 複合ファイル内に大量のオブジェクトが生成されるということになります。
しかし、OLE 複合ファイルでは一つのファイル内で同時に開くことができるオブジェクトの数が制限されており、この制限を超えるような書き込みが行われた場合に「メモリ不足」という意味のエラーが発生するのです。

SaveAs で保存できないアイテムを Explorer にドラッグアンドドロップすると保存ができるようですが、この場合はファイルへの書き込みを行うのは Explorer であり、Explorer が何らかの方法で制限を回避しているものと思われます。
(あるいは単にエラーを無視しているだけかもしれません。)

いずれにせよ、残念ながら、マクロで SaveAs により msg ファイルとして保存する場合にマクロの記述方法やレジストリ設定などでこの制限を回避する方法はありません。
このエラーが発生した場合に処理を中断させたくないということであれば、SaveAs の前に On Error Resume Next を実行し、エラーで中断せずに継続させるようにしてください。

参考リンク:

No MSG For You! – SGriffin’s MAPI Internals

[INFO] MSG 複合ファイルへのメッセージの保存

VBA の実行時エラーを処理する

Outlook.com の文字化け解消方法

コメントにて以下のご質問をいただきました。


はじめまして。困っていますので、助けて下さい。
outlook2013で、outlook.comのアカウントを使用しています。
数日前に送信できなくなったため、いろいろ試行錯誤した挙句、outlook2013で改めてアカウントを設定したところ、無事に送信できるようになりました。
恐らく、それからのことだと思いますが、
受信したメールにフラグを設定すると、そのメールだけ、差出人、受信者、件名、添付ファイル名のいずれか、もしくはすべてで文字化けします。
本文は正常のままです。
フラグを設定したメールの全てではありませんが、文字化けしないものは少数です。
何か対策はないものでしょうか?

申し訳ありません。書き忘れたことがありました。
outlook.comのアカウントなので、Exchange Active Syncによる接続です。
また、outlook.comですので、webでの操作が可能ですが、
webでは文字化けしておりません。
また、iphoneのメールアプリも利用していますが、
こちらでも文字化けしていません。
どうか、宜しくお願いします。


Exchange Active Sync は、本来 Exchange サーバーとモバイル製品のメールや予定の同期のために開発されたプロトコルであり、Outlook で Exchange Active Sync を使うといろいろ問題が起こるようです。
そのため、Outlook.com は現在 Office 365 のプラットフォームへの移行作業が進められており、Office 365 へ移行後はサーバーとの接続が Exchange Active Sync ではなく MAPI/HTTP に変わります。
MAPI/HTTP は以前から Exchange と Outlook の通信に使用されていた MAPI を HTTP ベースに実装したプロトコルであり、おそらく MAPI/HTTP に切り替わればこのような文字化けは発生しなくなると思います。
もし、Web 版の Outlook.com に接続して、左上のバナーに「Outlook メール」と表示されているのであれば移行済みですが、「Outlook.com」となっている場合は古いサーバーに接続されている状態です。
来年の半ばには全体が移行するようですが、以下の URL を表示すると明示的に移行が行われるようです。

http://mail.live.com/default.aspx?owaoptin=1

上記の URL を表示し、バナーで移行が完了したのを確認してから Outlook.com のアカウントを再作成し、MAPI/HTTP で接続して現象が回避できるか確認してみてください。

IMCEA で始まるメールアドレスへの配信不能通知について

Outlook でメールの送信を行った際に、ごくまれに IMCEA で始まるメールアドレスへの配信不能通知が生成される場合があります。
大抵はそのようなアドレスへ送ったつもりがないのに生成されるものであるため、誤送信やウイルス感染などが発生したのではないかと不安になる方もいるかもしれません。
今回はこのようなアドレスへの配信不能通知が生成される原因について解説します。

IMCEA とは何か?

まず、IMCEA という言葉についてですが、これは Internet Mail Connector Encapsulated Addres の略です。
Internet Mail Connector とは、Microsoft Exchange Server の最初のバージョンである 4.0 にあった、Exchange サーバーと SMTP サーバーの接続を行うオプション コンポーネントの名前です。
今ではメールといえば SMTP で送信されるのが当然のようになっていますが、10 年以上前にはメールの送信プロトコルにはメーカー独自のものを含めいくつかあり、Exchange サーバーはバージョン 5.5 まで国際電気通信連 (ITU-T) によって定められた X.400 をベースとして動作していました。
そのため、SMTP はオプション扱いであり、Exchange 組織からインターネットへメールを送受信する場合は Internet Mail Connector でアドレスやメール形式の変換を行っていました。

そして、IMCEA で始まるアドレスは、もともと Internet Mail Connector でメールを送信する際に、SMTP で使用できないアドレスをカプセル化して送信できるようにするためのものでした。
現在では、Internet Mail Connector というコンポーネントは廃止されましたが、SMTP 以外のアドレス形式が SMTP で送信された場合に IMCEA で始まるアドレスが Exchange Server と Outlook で使用されます。
つまり、何らかの理由で SMTP 以外のアドレス形式によるメール送信が行われた際にこのアドレスでの送信がされ、該当するアドレスが存在しないために配信不能通知が生成されるという現象が発生するのです。

具体的には以下のような場合が考えられます。

IMCEAEX で始まるアドレス

このアドレスは LegacyExchangeDN を SMTP 形式にしたものです。
通常、Exchange 組織内で LegacyExchangeDN が使用されますが、Active Directory にそのアドレスを持つユーザーや連絡先などが存在すれば、そのオブジェクトの SMTP アドレスが使用されます。
しかし、以下のような状況で LegacyExchangeDN を持つオブジェクトが存在しない場合、IMCEAEX で始まるメールアドレスにメールが送信されます。
・AD から削除されたユーザーなどに Outlook の連絡先やニックネーム キャッシュ、全員に返信などでメールを送信した
・別の Exchange 組織から PST などでコピーしてきたメールに対して返信や再送を実行した

IMCEAMAILTO で始まるアドレス

このアドレスはアドレス種別として MAILTO が指定されている受信者にメールを送信した場合に使用されます。
本来、MAILTO というような種別は Outlook や Exchange では使用されません。
しかし、Word 2007 の不具合で mailto: リンクをクリックしてメールを送信すると、アドレス種別が MAILTO になってしまうという現象が発生していました。
この不具合は以下の修正プログラムによって修正されています。

2475888 Office Word 2007 修正プログラム パッケージ (wordconv-x-none.msp、単語の x-none.msp): 2011 年 2 月 22 日
https://support.microsoft.com/ja-jp/kb/2475888

IMCEAINVALID で始まるアドレス

このアドレスはアドレス種別が指定されていない受信者にメールを送信した場合に使用されます。
正常に名前解決が行われている場合、アドレス種別が指定されていないということは発生しないのですが、以下のような手順でメールを送信すると正常に名前解決がされずにこの問題が発生する場合があります。

1. Exchange Server 2013 以降にキャッシュ モード オフ (オンライン モード) で接続する
2. Outlook でメールを作成する際に、メールアドレスの名前解決を実行せずに下書きに保存する
3. 下書きに保存した後でいったんメールを閉じ、下書きのメールを再び開いて送信する

通常のメール作成時には宛先の入力後に他のフィールドを選択すると、自動で名前解決が行われるので問題が起こらないのですが、以下のような状況で現象が発生しやすくなります。
・ 宛先に他のプログラムなどから大量にアドレスを追加する
・ mailto: リンクをクリックしてメールを送信する
・ Word や Excel など、他のプログラムからメールを送信する

いずれの場合も、下書きに保存する前に宛先の名前解決を明示的に実行することで現象発生を予防できます。
なお、アドレスの名前解決ができているかどうかは、アドレスに下線が引かれた状態かどうかで判断ができます。

その他

上記以外のパターンの場合、Outlook で動作するサードパーティ製のメール システムのアドレスへのメールを SMTP のアカウントで送信したものと考えられます。
たとえば、IMCEANOTES で始まる場合は Lotus Notes のアドレス、IMCEAFAX なら FAX 送信システムのアドレスという具合です。
この場合は正しいアカウントで送信しなおす必要があります。

作成中のメールの保存や送信ができなくなる現象について

コメントにて以下のご質問をいただきました。


教えてください、OUTLOOK2013で、下書きに入れたメールを再度編集して、送信ボタンを押した際、送信出来ずに保存も出来ない状態になる現象があるのですが、原因がわかりません。違うメールを立ち上げ、内容をコピー後に送信を行うと、送信されます。
対処方法ございましたら、教えていただけませんでしょうか。
よろしくお願いいたします。


Exchange サーバーにキャッシュ モード オフ (オンライン モード) で接続している場合、以下のような状況でご質問の現象が発生します。

  • PC がスリープまたは休止状態に入った
  • ネットワークが一時的に切断された

キャッシュ モードがオフの場合、Outlook で編集中のメールは Outlook のメモリと Exchange サーバーのメモリの両方に存在しており、アイテムの保存や送信を行うと Exchange サーバーのメモリにあるメールがサーバーのデータベースに保存されたり、送信されたりします。

しかし、サーバーのメモリにあるメールは、Outlook との接続が切断されると破棄されてしまいます。
そのため、上記のような理由でサーバーと Outlook の接続が切断されると、その時点で編集中だったメールはサーバー上に存在しない状態となるので、その後の保存や送信がサーバーではできなくなります。
この場合でも、Outlook のメモリ上には本文などのデータが残っているので、別のメールにデータをコピーすることは可能です。

対処方法としては、こまめに保存するか、キャッシュ モードをオンにして使うというものがあります。
キャッシュ モードでの使用がお勧めなのですが、組織のポリシーなどでキャッシュ モードを使えないようにしているという話もよくありますので、その場合は以下の手順で自動保存の設定を 1 分程度にしてください。

  1. Outlook を起動します。
  2. [ファイル]-[オプション] をクリックします。
  3. [メール] の [メッセージの保存] にある [送信していないアイテムを次の時間 (分) が経過した後に自動的に保存する] をオンにし、右のテキストボックスに 1 と入力します。
  4. [OK] をクリックします。

これにより現象を発生する頻度は減らせるでしょう。