トップ回答者
vb.netで起動した、EXCELのプロセスが残る。

質問
-
お世話になります。
以下のように、vb.netからEXCELを起動して、EXCELを閉じても、プロセスが残ります。
Dim xlApp As New Excel.Application
Dim books As Excel.Workbooks
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
books = xlApp.WorkbooksxlBook = books.Open(target)
xlSheet = CType(xlBook.Worksheets(1), Excel.Worksheet)
xlApp.Range("A1").Value = "AAA"'ワークシート保存
xlApp.ActiveWorkbook.Save()
xlApp.Range("A1").Select()
'最大化
xlApp.Application.WindowState = Excel.XlWindowState.xlMaximizedSystem.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(books)
' 次の行を実行すると Excel のプロセスが終了するはず
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)Rangeの記述がまずいのか
xlApp.Range("A1").Value = "AAA"
の一行を無くすと、EXCELを閉じると、プロセスが消えます。
Rangeの扱いにコツがいるのでしょうか?
宜しくお願い致します。
回答
-
xlSheet = CType(xlBook.Worksheets(1), Excel.Worksheet)
xlApp.Range("A1").Value = "AAA"
xlSheets = xlBook.Worksheets
xlSheet = CType(xlSheets(1), Excel.Worksheet)
Dim range As Excel.Range = xlApp.Range("A1")
range.Value = "AAA"
System.Runtime.InteropServices.Marshal.ReleaseComObject(range)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets)
Range オブジェクトもちゃんと解放しましょう。
- 回答としてマーク 山本春海 2011年4月6日 1:13
すべての返信
-
xlSheet = CType(xlBook.Worksheets(1), Excel.Worksheet)
xlApp.Range("A1").Value = "AAA"
xlSheets = xlBook.Worksheets
xlSheet = CType(xlSheets(1), Excel.Worksheet)
Dim range As Excel.Range = xlApp.Range("A1")
range.Value = "AAA"
System.Runtime.InteropServices.Marshal.ReleaseComObject(range)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets)
Range オブジェクトもちゃんと解放しましょう。
- 回答としてマーク 山本春海 2011年4月6日 1:13
-
こんにちは、TAKAPI さん。
MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。
その後いかがでしょうか。
みなさんからのアドバイスはご確認いただけましたか?
参考になるアドバイスをいただいているようでしたので、勝手ながら一旦私のほうで回答としてマークさせていただきました。
glaco さんや、trapemiya さん、情報ありがとうございます。
いただいた情報の中で、解決に役立った投稿や、参考になる情報などの有効な情報には回答としてマークすることをお願いしています。
今後、同じ問題でこのスレッドを参照される方にも、有効な情報を活用いただけると思いますので、ご協力よろしくお願いいたしますね。
今後とも、MSDN フォーラムをよろしくお願いいたします。それでは。
日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海