質問させていただきます.どうぞよろしくお願いします.
vb2008で,エクセル操作をするアプリケーションの作成を試みております.
コードの流れとしましては,
エクセル操作
↓
オブジェクト・アプリケーション解放
(自分的にはここでタスクマネージャからExcel.exeが
消えると思うのですが,残ります)
↓
メッセージボックス「終了」
↓
アプリケーションを右上の×マークで閉じる
(タスクマネージャからExcel.exeが消えます)
となります.
色々なページを参考にさせていただいて,Excelが解放されるように
したつもりなのですが,VBアプリケーション終了ギリギリまで
存在し続けるという事は,うまく解放できていないということなのでしょうか?
作成したコードは以下のようになります.
(バグ取り中に,エクセル操作部分のコードはほとんど消去してみました.
しかしまだ上記のような現象になっております)
Private Sub ButtonA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonA.Click
Dim N_e As Integer
Call Excel一括置換(N_e)
MsgBox("終了" )
End Sub
Private Sub Excel操作(ByRef N As Integer)
Dim xlApp As New Excel.Application
Dim xlBooks As Object
Dim WB As Object
Dim Rng As Object
'================== 終了処理 =====================
Rng = Nothing : MRComObject(Rng)
WB = Nothing : MRComObject(WB)
xlBooks = Nothing : MRComObject(xlBooks)
xlApp.Quit() : xlApp = Nothing : MRComObject(xlApp)
End Sub
Public Shared Sub MRComObject(Of T As Class)(ByRef objCom As T, Optional ByVal force As Boolean = False)
If objCom Is Nothing Then
Return
End If
Try
If System.Runtime.InteropServices.Marshal.IsComObject(objCom) Then
If force Then
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(objCom)
Else
Dim count As Integer = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom)
Debug.WriteLine(count)
End If
End If
Finally
objCom = Nothing
End Try
End Sub
何か些細なことでもご指摘いただければ非常に助かります.
どうぞよろしくお願いたします.
お礼
redfox63様 ご指摘いただいた通りでございました.どうもありがとうございます. アプリ終了と同時に解放できるので悩みましたが,やはり 解放できていなかったんですね. 夜遅い時間にかかわらず閲覧・ご回答いただけたことに感謝いたします. どうもありがとうございました.