[前][次][番号順一覧][スレッド一覧]

learn-ruby-in-kansai:132

From: Nobuyuki-Sakai <sakai-n@m...>
Date: Sat, 25 Dec 2004 21:38:53 +0900
Subject: [learn-ruby-in-kansai:132] Re: WIN32OLE についての質問2

酒井です。

cuzicさん、ありがとうございました。 おかげで�,浪魴茲靴泙靴拭�
cell.item(i, j).Borders(position('l')).Weight = line_w('s')が
cell[i, j].Borders(position('l')).Weight = line_w('s')と記述できるようになり 
ました。

しかし、module定義の中のdef v.cell= cellとdef v.method_missing(name,*args)
の意味が理解できません。勉強会で教えてください。
 >module Worksheet
 >  def [] y,x
 >    cell = self.Cells.Item(y,x)
 >    v = cell.Value
 >    def v.cell= cell  #理解できません
 >      @cell = cell
 >    end
 >    v.cell = cell
 >    def v.method_missing(name,*args)  #理解できません
 >      @cell.__send__(name,*args)
 >    end
 >    return v
 >  end
 >end
 >ポイントは method_missing を使うことで、cell にdelegate するようにしてい
る点です。

 >私がたとえばライブラリ作成のような方法ではなく、Win32OLEの記事を書く
 >という形で私が得ている知見を役立てようと思ったのには理由があります。
 >それは、読んだ人がそれぞれ自分のやり方をしていってもらうためです。
 >自分なりのやり方でやっていってもらえるとうれしいです。

なかなか参考にできる例がVBAしかなくRubyらしくWin32OLEでEXCELを使うことは、難 
しい。
VBAの例題は、だらだら機能を紹介記述する例が多いのとRubyのOOPに対する知識不足 
も原因の1つです。

 >簡単に使うということを重視すると、ラッパークラスを用意するのが良いでしょうね。

EXCEL用のラッパークラスを作れるようになるには、もう少し時間と知識が必要です。

�△砲弔い討蓮�考え中です。複数のBookのsheetを使う場合の間違いでした。
新規のbook、Sheet名、Sheetの後処理などそれぞれ異なる場合にも適用できるように 
考えたいと思っています。

 >参考にしますので、どのテクニックが知らなかったのかとか、これは使える!と
 >思ったテクニックにどんなものがあったのかも教えて欲しいです。
Rubyは、Classやmoduleを作成しなくてもプログラムできてしまうため使って自分で 
は、作りませんでした。
1.moduleによる拡張。 moduleは、Classにincludeして使うものと思っていました。
2.. yieldの使い方。   yieldについては、本を読んでも今1つ使い場 
所が不明でした。

でも、Win32OLEで使うにはEXCELが一番使い道があるように思います。
よいクリスマスプレゼントになりました。


今後ともよろしくお願いします。 


--
ML: learn-ruby-in-kansai@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

->     132 2004-12-25 13:38 [sakai-n@m...        ] Re: WIN32OLE についての質問2           
       137 2004-12-26 12:56 ┗[tomoya@c...         ]