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

learn-ruby-in-kansai:126

From: Nobuyuki-Sakai <sakai-n@m...>
Date: Fri, 24 Dec 2004 20:47:03 +0900
Subject: [learn-ruby-in-kansai:126] WIN32OLEについての質問

酒井信之です。

 >るびまの記事について「ここがわかりにくい」とか
 >「もっとここについて説明してほしい」とかありましたら、参考に
 >しますんで、教えてください。

EXCELでのWIN32OLEについて
1:EXCELのcellは、cell[r, c]の様に参照したい。
 CELLの参照は、cellcell[r, c]の様にしたいのでmoduleの定義を以下の様にす 
るのは、どうでしょう。
    sheet = book.worksheets('Sheet1')
    cell = sheet.cells
    cell = cell.extend WorkCell

module WorkCell
   def [] r,c
      wcell = self.Item(r,c)
      if wcell.MergeCells then
        wcell.MergeArea.Item(1,1).Value
      else
        wcell.Value
      end
    end
 
 def []= r,c,value
   ....
 end
end
これでcell.item(i, j).value = '文字: size20,黒,Center,Center'が
cell[i, j] = '文字: size20,黒,Center,Center' とできる。

問題点
しかし、cell.item(i, j).Font.Size = 20は、cell[i, j].Font.Size = 20とは、でき 
ない。
Fontに関する再定義がまた必要になる。(CELLに関する属性は沢山あり面倒)
   cell = sheet.Range("B2")
   borders = cell.Borders
  ...
   border = borders.Item(index)
   border.extend Border
で定義する方法は、かえってわかりにくいのではないですか。
 cell.item(i, j).Borders(position('l')).LineStyle = line_s('c')
 cell.item(i, j).Borders(position('l')).Weight = line_w('s')
 の方がわかりやすい気がしますが。


2:EXCELの初めて見る呼び出しかた。
 以下の呼び出し方は、処理と終了またはエラーが近くにあり非常に参考になりました。
 個人的には、eachを繰り返し以外に使うには、少し抵抗がありますが。
def openExcelWorkbook filename
   filename = getAbsolutePath(filename)
   xl = WIN32OLE.new('Excel.Application')
   book = xl.Workbooks.Open(filename)
   begin
     yield book
   ensure
     xl.Workbooks.Close
     xl.Quit
   end
end

問題点
 複数のsheetを扱うときは、適用できないのでは。
 色々な場合にも適用できてわかりやすい書き方を模索しています。どなたが教えて 
ください。


以上 気が付いた事を書きました。 今回の記事には、知らないことがいろいろとあ 
り勉強になりました。












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

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

       119 2004-12-22 05:19 [gollum@h...         ] 第1回 日本Ruby の会関西勉強会開催の案内 
       120 2004-12-23 00:08 ┣[tomoya@c...         ]                                       
       123 2004-12-23 05:17 ┃┣[gollum@h...         ]                                     
       124 2004-12-23 07:46 ┃┃┣[xml@t...            ]                                   
       129 2004-12-25 02:24 ┃┃┗[tomoya@c...         ]                                   
->     126 2004-12-24 12:47 ┃┗[sakai-n@m...        ] WIN32OLEについての質問              
       128 2004-12-25 02:24 ┃ ┗[tomoya@c...         ]                                   
       134 2004-12-25 16:43 ┃  ┣[xml@t...            ]                                 
       136 2004-12-26 11:39 ┃  ┗[gollum@h...         ] Re: WIN32OLEについての質問/Object#....
       122 2004-12-23 05:02 ┣[zn@m...             ]                                       
       125 2004-12-23 08:39 ┣[sakai-n@m...        ]                                       
       130 2004-12-25 07:12 ┣[mash@a...           ]                                       
       133 2004-12-25 14:59 ┃┣[zn@m...             ]                                     
       138 2004-12-26 12:57 ┃┃┗[tomoya@c...         ]                                   
       140 2004-12-27 03:41 ┃┗[mash@a...           ] Cygwin 環境から MSWIN32 版 Ruby を使う際のパス変換について
       143 2004-12-29 13:20 ┗[babie7a0@y...       ]