人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

★環境
・VB.NET2003
・Excel2000

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

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

●質問者: akio0911
●カテゴリ:コンピュータ
✍キーワード:VB.NET コメントアウト コード プログラム プロセス
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ●
●35ポイント

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

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

◎質問者からの返答

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


2 ● mj99
●35ポイント ベストアンサー
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)
◎質問者からの返答

問題が解消されました。

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ