同じ msg ファイルを繰り返し開こうとするとエラーが表示される現象について


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


以下のトラブルで困っています。ご教授をお願いします。

Outlook2010の再インストールをしてみましたが改善しません。

受信メールをファイル化して分類格納しています。XXX.msg等々です。必要時に開いて使用しています。
最近になってから、Outlook起動後にXXX.msgを最初に開く時は問題ないのですが、一度閉じて再度開くと、
“ファイル・・・・・XXX.msgを開けません。ファイルが存在しないか、そのファイルを開くためのアクセス権がないか、またはほかのアプリケーションで開いている可能性があります。ファイルの保存先フォルダを右クリックし、[プロパティ]をクリックして、そのフォルダへのアクセス権を確認してください。”とのメッセージが出ます。
それ以降は、Outlookを再起動するまでファイルを開くことができません。プロパティはおかしくなってはいないようです。
また、Outllookをセーフモードで起動するとこの現象は発生しません。
修復方法がございましたら、アドバイスをお願いします。Windows7 (32bit)の再インストールからやり直すしかないでしょうか?


ご質問のような現象は、ほとんどの場合 Outlook のアドインが原因で発生します。

Outlook のアドインの中にはインスペクターというメールの表示や作成を行うウィンドウで何らかの処理を行うものがあります。
そのようなアドインはメールをインスペクターで表示すると、アイテムを参照したり、プロパティを変更したりします。
そして、本来であればインスペクターを閉じた際には、アイテムを開放するという処理が行われます。

しかし、アドインによるアイテムの開放が不十分な場合、Outlook のメモリ上ではまだアドインが参照しているという状態になり、アイテムがロックされたままとなります。
msg ファイルを開いてこの状態になると、インスペクターを閉じても msg ファイル自体を閉じることができなくなってしまい、再度 msg ファイルを開こうとすると Outlook 自体がファイルをロックしているという状態になるので、ご質問のエラーが表示されるというわけです。

この問題の回避策としては、以下のいずれかが考えられます。

  • 問題を引き起こしているアドインを特定し、そのアドインを無効にする。
  • msg ファイルが開けなくなったら、Outlook を再起動する。

なお、もし自分で作成したアドインにより現象が発生しているということであれば、アドインがアイテムを参照した後、適切に開放処理を行っているか確認してみてください。
たとえば、VSTO でアドインを作成している場合、単に変数に Nothing や null を設定したとしても、その時点では Outlook のアイテムが解放された状態となりません。
これは、.NET Framework 上のガベージ コレクションにより完全にメモリからオブジェクトが解放されない限り、COM オブジェクトへの参照が残り続けるためです。
この動作についての詳細は以下のブログで詳しく説明されていますので、こちらを参照してください。

Office オートメーションで割り当てたオブジェクトを解放する – Part1

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中