タイトル : Re^3: Excel ComObjectの解放 投稿日 : 2014/10/29(Wed) 14:28 投稿者 : 魔界の仮面弁士
> xlSheetsの解放はExcelCloseのところで行っているのでは足りないということだと思いますが 掲示板に書かれていない、省略された部分に原因があるのかも知れません。 原因の切り分けのため、第三者がそのまま検証できるよう、 必要な変数宣言もすべて含めた、完全なソースコードを省略せずに 記載していただけないでしょうか。検証に必要最低限の内容で。 特定の Excel 文書ファイルが必要なら、その文書の作成手順もあると助かります。 もしも他者が「実験コード」でも現象を再現できるようであれば、 原因を追跡しやすくなりますし、他の人には再現できないようであれば、 プログラムではなく、動作環境に問題がある可能性が浮上してきます。 また、実験用に作り直したコードでは再現しないということになれば、 今度は既存コードとの違いを調べていくという作業を行えばよい事になりますよね。 > 何を解放していないのかわからないです。 http://hanatyan.sakura.ne.jp/dotnet/Excel01.htm で紹介されている MRComObject の実装を呼び出しているだとしたら、 「MRComObject(xlSheets)」としている箇所を 「MRComObject(xlSheets, True)」に変更してみて下さい。 それで解放漏れが無くなるようであれば、どこかで xlSheets への COM 参照が複数生成されてしまっていることになります。 どの行を追加した段階で、参照カウントが増加してしまっているのかを追跡してみてください。 このとき、念のため「Option Strict On」にてコンパイルが通るようにしておきましょう。 暗黙の型変換が原因で、参照カウントが増じてしまうケースもあるようなので。 |