babie です。
手元に、
---
book.Close(false)
xl.Workbooks.Close
xl.Quit
----
としたスクリプトがあります。ちょっと試したところ Excel のプロセスはちゃ
んと消えているようです。
ずいぶん前に作ったので、なぜ false を使うか忘れてしまいましたが、検索す
れば arton さんのとこが引っかかると思います。
ちなみに以下のようなメソッドを作って使っています。
----
# 絶対パス取得
def get_absolute_path filename
fso = WIN32OLE.new('Scripting.FileSystemObject')
return fso.GetAbsolutePathName(filename)
end
# Excel アプリケーションを立ち上げる
def open_app visible
app = WIN32OLE.new('Excel.Application')
app.visible = visible
begin
yield app
ensure
app.Workbooks.Close
app.Quit
end
end
# Excel ドキュメントを開く
def open_book xl, file
path = get_absolute_path file
book = xl.Workbooks.Open(path)
begin
yield book
ensure
book.Close(false)
end
end
if __FILE__ == $0
open_app(false) { |xl|
["a.xls", "b.xls"].each do |f|
open_book(xl, f) { |book|
...処理...
}
end
}
end
----