• 締切済み

RubyによるExcelファイル出力

お世話になります。現在、以下のプログラムにて、指定対象のセル範囲を画面出力しております。また、画面出力以外で、プログラム対象となったファイル名がExcelにて出力されるようにしておりますが、 "puts sheet.Range('C15:C50').value" にて表示している内容を出力エクセルにも記載したいと考えているのですが、うまい方法はないでしょうか。 ご教示頂ければ幸いです。 # excel_data_gets.rb t = Time.new create_inf = t.strftime("%Y%m%d%H%M") log_a = ".xls" out_log = ("#{log_a}#{log_d}") chk_value_log = File.open(out_log,"w") # require 'win32ole' def getAbsolutePath file fso = WIN32OLE.new('Scripting.FileSystemObject') fso.GetAbsolutePathName(file) end def getFuncData file file = getAbsolutePath(file) $excel.visible = FALSE book = $excel.Workbooks.Open(file) sheet = book.Worksheets(1) puts sheet.Range('C15:C50').value book.Close end $excel = WIN32OLE.new('excel.Application') ARGV.each{|file| if file.length > 0 chk_value_log.print file.sub(/\.xls/,"") + "\n" # -> ワイルドカード展開用 chk_value_log.print getFuncData(file) end } $excel.Quit chk_value_log.close

みんなの回答

  • ken-etsu
  • ベストアンサー率46% (55/119)
回答No.1

質問の意味がいまひとつ不明ですが、要するに、putsで出力している内容を、別のExcelファイルに記録したい、ってことですか? だったら、出力用ExcelファイルをOpenしておいて、putsしているRangeに対してCopyメソッドを使って、出力用Excelファイルの好きな範囲(Range)に直接コピーするのが早いんじゃないでしょうか? 詳しくは、Microsoft Excelのヘルプを参照してください。

関連するQ&A