0

WindowsXPでExcel2007を使用して一部の処理を自動化するために、Groovy1.7.0のScriptom拡張機能を使用しています。

これは、ExcelのActiveXオブジェクトでquitを呼び出したにもかかわらず、常にExcelプロセスを実行したままにするようです。(Scriptomのサンプルドキュメントにもこの現象への参照があります。)

コードは次のようになります:


import org.codehaus.groovy.scriptom.ActiveXObject;
def xls = new ActiveXObject("Excel.Application")
xls.Visible = true

// do xls stuff

xls.Quit()

表示されているExcelウィンドウは表示されなくなりますが、タスクマネージャーにはEXCELプロセスが残ります(スクリプトを実行するたびに、さらに多くのプロセスが積み重なっていきます)。

エラーメッセージや例外はありません。

Excelプロセスが取り残されている理由を誰かが説明できますか?それを防ぐ方法はありますか?

4

2 に答える 2

4

これは機能します:

xls.Quit()
Scriptom.releaseApartment()

javadocsの状態:

場合によっては、すべてがクリーンアップされる前にJVMが閉じて、自動化サーバー(特にExcel)がハングしたままになることがあります。スクリプトが終了する前にこれを呼び出して、自動化サーバーから正しい動作を取得します。

于 2010-06-29T12:12:01.550 に答える
0

あなたが行方不明のようです

xls.release();

ここで行われているように。

于 2010-05-05T20:04:08.837 に答える