タイトル : Re: エクセルを2度目に起動するとエラーになってしまいます。 投稿日 : 2007/04/24(Tue) 18:50 投稿者 : 魔界の仮面弁士
> この時にエクセルの”WorkbookDeactivate”イベントを取り、オブジェクトの解放を > 行おうとしています。 そのタイミングで解放するという事自体が不味いのでは。 未確認ですが、デリゲートが参照している分など、 逆に残しておいた方が良い参照も含まれているかも知れません。 > エクセルの終了はユーザーがエクセルの終了ボタンをクリックすることにより行っています。 終了処理をユーザ操作に任せるのであれば、イベントをとらえて処理するのではなく、 単に起動だけ行い、Excel への参照のみを解放するだけで良いのでは。 Module Sample Sub Main Dim O As Object = CreateObject("Excel.Application") O.Visible = True Dim S As Object = O.Workbooks Dim B As Object = S.Add() System.Runtime.InteropServices.Marshal.ReleaseComObject(B) System.Runtime.InteropServices.Marshal.ReleaseComObject(S) System.Runtime.InteropServices.Marshal.ReleaseComObject(O) MsgBox("終了") End Sub End Module > Do > I = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom) > Loop Until I <= 0 どうしても RelaseComObject を複数回呼ばなければならない場面というのもありますが、 かといって、常にそのような方法で解放するのは、避けた方が良いかと。 使用中の参照をうっかり解放してしまうと、逆に問題があるでしょうし。 |