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

こんにちは、Office 開発系サポート 森 健吾 (kenmori) です。 今回の投稿では、Office オートメーションの実装コードで割り当てたオブジェクトを解放するというテーマにて記載いたします。 .NET Framework 上で動作するカスタム アプリケーションにおいて、Office オートメーションで処理を実装する場合には割り当てたオブジェクトを確実に解放することをお勧めします。   2016/12/2 Update サンプル コードを中間オブジェクトも解放するよう、より適切な形に変更しました。   2017/3/28 Update アプリケーション終了前に一部のオブジェクトを解放するよう、サンプル コードをさらに適切な形に変更しました。   これは、Office が内部的に OLE や DDE などを通じて実施するオブジェクト インスタンス制御 (※) によって CLR 上で解放漏れ (または解放待ち) のオブジェクトが誤って参照されてしまい、カスタム アプリケーション側の動作に様々な予期せぬ影響を与えることにあります。 ※ OLE や DDE などを通じて実施するオブジェクト インスタンス制御や、解放漏れによる影響等については、別途記載を予定しております。 今回は、詳細な上記の詳細な理由や解放しない際の影響等は省略し、オブジェクト解放の正しい実装方法について記載します。   1.     割り当てたオブジェクトを解放する Office オートメーションで割り当てたオブジェクトについては、自分で解放処理を記載して必ず破棄される必要があります。 例えば、以下の Windows アプリケーションにおけるサンプル コードでは VB.NET で…