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... ]