★環境

・VB.NET2003
・Excel2000

VB.NET2003でExcel2000を制御しています。
以下のようなコードを追加したところ、
プログラム終了後にExcel2000のプロセスが残るようになってしまいました。
以下のコードをコメントアウトすると、Excel2000のプロセスは残りません。
このコードに対する修正案を示してください。

http://d.hatena.ne.jp/akio0911/20070528/1180323903

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2007/05/28 16:31:01
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:mj99 No.2

回答回数138ベストアンサー獲得回数38

ポイント35pt
Dim xlColumns As Excel.Range
xlColumns = xlApplication.Columns("B:B")

こんな感じに直してください。

Dim xlColumns As Excel.Range
Dim xlRange As Excel.Range
xlColumns = xlApplication.Columns
xlRange = xlColumns("B:B")

でxlColumnsとxlRangeの両方の開放が必要です。

----

検証コード

Dim xlApp As New Excel.Application
Dim xlbooks As Excel.Workbooks = xlApp.Workbooks
Dim xlbook As Excel.Workbook = xlbooks.Add
Dim xlSheet As Excel.Worksheet = xlbook.ActiveSheet
Dim xlColumns As Excel.Range = xlSheet.Columns
Dim xlRange As Excel.Range = xlColumns("B:B")

xlRange.ColumnWidth = 9
xlbook.Close(False) ' 保存しないで閉じる
xlApp.Quit()

System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlColumns)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlbook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlbooks)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
id:akio0911

問題が解消されました。

ありがとうございました。

2007/05/28 16:30:29

その他の回答1件)

id:bonlife No.1

回答回数421ベストアンサー獲得回数75

ポイント35pt

こちらが参考になるのではないでしょうか。

面倒なのは、ReleaseComObject メソッドを実行するために、参照したものをすべて変数へ格納しておく必要があるという点です。

id:akio0911

コードに対する修正案を示してください。

2007/05/28 13:35:05
id:mj99 No.2

回答回数138ベストアンサー獲得回数38ここでベストアンサー

ポイント35pt
Dim xlColumns As Excel.Range
xlColumns = xlApplication.Columns("B:B")

こんな感じに直してください。

Dim xlColumns As Excel.Range
Dim xlRange As Excel.Range
xlColumns = xlApplication.Columns
xlRange = xlColumns("B:B")

でxlColumnsとxlRangeの両方の開放が必要です。

----

検証コード

Dim xlApp As New Excel.Application
Dim xlbooks As Excel.Workbooks = xlApp.Workbooks
Dim xlbook As Excel.Workbook = xlbooks.Add
Dim xlSheet As Excel.Worksheet = xlbook.ActiveSheet
Dim xlColumns As Excel.Range = xlSheet.Columns
Dim xlRange As Excel.Range = xlColumns("B:B")

xlRange.ColumnWidth = 9
xlbook.Close(False) ' 保存しないで閉じる
xlApp.Quit()

System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlColumns)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlbook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlbooks)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
id:akio0911

問題が解消されました。

ありがとうございました。

2007/05/28 16:30:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません