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
----