タイトル : 補足事項として 投稿日 : 2005/03/24(Thu) 18:00 投稿者 : 魔界の仮面弁士
> どうも自分は R2 〜 R5 を変数として考えていたのですけど、 > まったく別物って考えたほうが良いってことなんですよね? いえいえ。それ自体はただの変数ですよ。(^^; 問題なのは、それらの変数に、Excel の ActiveXコンポーネントを 保持させているという点にあります。 厄介な事に、ActiveX(COM)のオブジェクト と .NET のオブジェクトでは、 メモリの管理方法が全く異なるため、.NET側の変数が使われなくなっても、 COM側のオブジェクトまでが「即座に」解放されるわけではありません。 それゆえ、.NETからCOMを利用する場合は、取得したCOMオブジェクトを 「自分で解放しなければいけない」という自体が発生するわけです。 hhttp://www.microsoft.com/japan/msdn/library/ja/jpdnbnetguide/htm/IntroDotNET_ch02-08.asp? これは、Excel以外の COMオブジェクトを利用している場合にもいえますので、 .NET から COM を利用する場合は、ReleaseComObject を呼び忘れている 部分が無いか、常に意識しながらコーディングするようにして下さい。 Excel ならば、プロセスが残っている事を簡単に確認できますが、 その他のCOMオブジェクトの場合は、うっかり解放し忘れていても、 その事に、なかなか気づきにくかったりしますからね。 |