cuzic と申します。 るびまで Win32OLE の記事を書いていました。 ruby-list 初投稿です。 On Mon, 28 Nov 2005 10:13:49 +0900 "Hisashi Yahata" <yahatah / agr.kyushu-u.ac.jp> wrote: > 質問で恐縮ですが、ご教示ください。 > > OSはwin2Kのもとで、下記のようにwin32oleを使い、エクセルファイルを読み込むプ > ログラムを利用しています。 > 問題は、実行するたびに、タスクマネージャーでプロセスをみると、EXCEL.exeが増 > えていきます。 (snip) > どなたか、メソッド(コマンド)ないし対処法をご教示ください。よろしくお願いし > ます。 WIN32OLE::connect を利用すれば、新しい Excel.exe が増えることなく 既存の Excel に接続できます。 具体的には下記のようにすれば、まだ開いていない場合にだけ開くことが できるのではないでしょうか? −−− require 'win32ole' def getAbsolutePath filename fso = WIN32OLE.new('Scripting.FileSystemObject') return fso.GetAbsolutePathName(filename) end def openExcel filename filename = getAbsolutePath(filename) xl = nil begin xl = WIN32OLE::connect("Excel.Application") rescue WIN32OLERuntimeError xl = WIN32OLE.new("Excel.Application") end xl.Workbooks.each do |sheet| if sheet.FullName == filename sheet.Activate end end unless xl.ActiveWorkbook && xl.ActiveWorkbook.FullName == filename xl.Workbooks.Open(filename) end xl.Visible = true return xl end if $0 == __FILE__ openExcel("sample1.xls") end -- cuzic <tomoya / cuzic.com> プログラミングは素晴らしい http://www.cuzic.com/