From: m y Date: 2010-01-07T23:59:51+09:00 Subject: [ruby-list:46750] Re: win32oleを活用したExcel操縦用ライブラリ exlap.rb --------------090402010806060108010301 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit 吉泉さん やなぎさわです。 返信ありがとうございます。 自分もいろいろと試して unless defined?(ExcelConstant::CONSTANTS) WIN32OLE.const_load(@obj, ExcelConstant) end のようにしたらwarningが消えたので、それで満足してました。 修正版のexlap.rbを使ってみたところ、 こちらでも無事に動作しました。 対応していただきありがとうございます。 上書きの確認ダイアログも出なくなったので良かったです。 > −−−− demo2.rb ここから > #! ruby -KS > require "exlap" > fnames = Dir.glob("*.csv") > Exlap.new(*fnames) {|wb| > outfile = wb.obj.FullName.sub(/\.csv$/i, ".xls") > wb.save outfile > wb.close > } > −−−− ここまで > こちらの方がコードがシンプルで動作も速いですね。 自分の環境だとdemo.rbが2.14secで、 demo2.rbが1.594secでした。 @obj.Visible =falseで画面表示をOFFにするより速いです。 以前にSaveAsを直接呼んで保存しようとしたらファイル形式の指定ではまったので、 拡張子を.xlsにするだけでちゃんと保存できるのも便利だと思います。 exlap.rbの中身を含めてとても勉強になりました。 以上、よろしくお願い致します。 (2010/01/07 0:46), YOSHIIZUMI wrote: >  吉泉です。 > >  やなぎさわさん、exlap.rbについてのご指摘ありがとうございました。 >  私のところ Excel(OfficeXP) on WindowsXP & Excel(Office2007) on Windows VISTA > の両方で、やなぎさわさんと同じエラーが発生しました。 > >  1つのrubyスクリプトの中で、繰り返し Exlap.new を呼び出すケースは試していませ > んでした。 >  あわせて、Xl……の定数のloadは、Exlap.newの呼び出しとは関係なく一度だけ行われ > るように改めないといけないことに気づきました。 > >  で、やなぎさわさんが提示して下さった demo.rb が動くように exlap.rb を修正しま > した。次の URI からダウンロードできます(exlap.rbのみ)。 > http://cup.sakura.ne.jp/exlap.rb >  もう少しあれこれテストしてみて、大丈夫そうなら ZIP アーカイブも更新しようと思 > います。 > >  それから、やなぎさわさんの demo.rb に関連して、蛇足ですが、「Excelでcsvファイ > ルを開いて、拡張子を .xls に変更してセーブし直す。」ということだけでよければ、 > 下のようなスクリプトもありかなと思います。ご参考まで。 > > −−−− demo2.rb ここから > #! ruby -KS > require "exlap" > fnames = Dir.glob("*.csv") > Exlap.new(*fnames) {|wb| > outfile = wb.obj.FullName.sub(/\.csv$/i, ".xls") > wb.save outfile > wb.close > } > −−−− ここまで > >  以上、よろしくお願いします。 > > > ? > > __________ ESET Smart Security からの情報, ウイルス定義データベースのバージョン 4748 (20100106) __________ > > このメッセージは ESET Smart Security によって検査済みです。 > > http://canon-its.jp > > > > > --------------090402010806060108010301--