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

コードリスト1を実行しても
EXCELプロセスは残らないのですが、

コードリスト2を実行すると
EXCELプロセスが残ってしまいます。

http://d.hatena.ne.jp/akio0911/20070518/1179471653

EXCELプロセスが残ってしまう現象を回避するための
修正案を示してください。

●質問者: akio0911
●カテゴリ:コンピュータ
✍キーワード:Excel コード プロセス リスト 回避
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● F-15X
●35ポイント

TimberLandChapelのTech Blogより

【VB.NET】VB.NET から Excel の COM オブジェクトを操作する場合の注意点

Excel COM オブジェクトを正しく解放するためのコツ

「.(ドット)」を使用して,プロパティやメソッドを経由して呼び出してはいけない。


xlBorder = xlSelection.Borders(8) 'xlEdgeTop=8

◎質問者からの返答

これを解決するためには

どのように書き換えてやれば良いのでしょうか?


2 ● mj99
●35ポイント ベストアンサー
xlBorder = xlSelection.Borders(8)

これを下記のように直す

xlBorders = xlSelection.Borders
xlBorder = xlBorders(8)

で、xlBordersとxlBorderと両方の開放が必要です。

----

下記サンプルではプロセスが残らないことを確認済み。

Dim xlApp As New Excel.Application
Dim xlbooks As Excel.Workbooks = xlApp.Workbooks
Dim xlbook As Excel.Workbook = xlbooks.Add
Dim xlRange As Excel.Range = xlApp.Selection
Dim xlBorders As Excel.Borders = xlRange.Borders
Dim xlBorder As Excel.Border = xlBorders(Excel.XlBordersIndex.xlEdgeBottom)

xlBorder.LineStyle = Excel.XlLineStyle.xlDot
xlbook.Close(False) ' 保存しないで閉じる
xlApp.Quit()

System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBorder)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBorders)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlbook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlbooks)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)

(....イヤになるほど使いづらいですよね.....)

◎質問者からの返答

>で、xlBordersとxlBorderと両方の開放が必要です。

なるほど。

>(....イヤになるほど使いづらいですよね.....)

そうですね。

何とかしてほしいものです。

関連質問


●質問をもっと探す●



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