… 前回の続き …
フォントの色設定にトライした。
http://api.openoffice.org/docs/common/ref/com/sun/star/style/CharacterProperties.html
上記ページには、プロパティとして、CharColor というのがある。
http://api.openoffice.org/docs/common/ref/com/sun/star/style/CharacterProperties.html
上記ページには、プロパティとして、CharColor というのがある。
あるにはあるのだが、リンクをたどってみても、意味がわからない。
::com::sun::star::util::Color という構造体(?)の値らしいことはわかるが、それ以上のことはわからない。
::com::sun::star::util::Color という構造体(?)の値らしいことはわかるが、それ以上のことはわからない。
Calc(カルク)で文字の色を変える動作をマクロ自動記録でチェックした。
(下記のコードは文字を赤色にした場合)
(下記のコードは文字を赤色にした場合)
*****マクロ自動記録結果 ここから*****
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Color"
args2(0).Value = 16711680
dispatcher.executeDispatch(document, ".uno:Color", "", 0, args2())
*****マクロ自動記録結果 ここまで*****
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Color"
args2(0).Value = 16711680
dispatcher.executeDispatch(document, ".uno:Color", "", 0, args2())
*****マクロ自動記録結果 ここまで*****
16711680 という意味不明の数字を発見した。
Visual Basic .Netで、この数字を下記のように利用してみた。
Visual Basic .Netで、この数字を下記のように利用してみた。
oSheet.getCellByPosition(0,0).CharColor=16711680
確かに文字色は「赤」になった。
なぜ「赤」が 16711680 なのか… なんでだ~!
ムカムカ状態に突入である。
なぜ「赤」が 16711680 なのか… なんでだ~!
ムカムカ状態に突入である。
悩んだあげく、試しに、Visual BasicのRGB関数を下記のようにつかってみた。
oSheet.getCellByPosition(0,0).CharColor = Microsoft.VisualBasic.RGB(255,0,0)
oSheet.getCellByPosition(0,0).CharColor = Microsoft.VisualBasic.RGB(255,0,0)
エラーは発生しないのだが、RGB(255,0,0)で赤100%を指定しているにもかかわらず、文字が青になるではないか!
ムカムカの極致!
ムカムカの極致!
しかし・・・
OOoForumでもヒットしない。
OOoForumでもヒットしない。
・・・・・・悪戦苦闘の数時間後・・・・・・
関連ありそうな記事に貼り付けてあるリンクを追いかけて、やっとのことで見つけたぞ。
(なんせ、OOoForumは全て英語なのだ。集中力を全員集合させなければならないのだ)
(なんせ、OOoForumは全て英語なのだ。集中力を全員集合させなければならないのだ)
そして、それが、Visual Basic .Net用、オープンオフィスRGB関数だ。
Public Function OOoRGB(ByVal redV As Integer, ByVal greenV As Integer, ByVal blueV As Integer) As Integer
OOoRGB = ((redV And 255) * 65536) + ((greenV And 255) * 256) + (blueV And 255)
End Function
OOoRGB = ((redV And 255) * 65536) + ((greenV And 255) * 256) + (blueV And 255)
End Function
この関数は、現在のところYahooでもGoogleでも見つけてくれない貴重な関数だ。
(私の探し方が悪いだけなのかもしれないが…)
(私の探し方が悪いだけなのかもしれないが…)
次のコードを書いて、
oSheet.getCellByPosition(0,0).CharColor=OOoRGB(255,0,0)
早速Runさせてみる。
oSheet.getCellByPosition(0,0).CharColor=OOoRGB(255,0,0)
早速Runさせてみる。
ヨッシャ!ちゃんと文字が赤くなっているぞ。
この関数を使えば、VBのRGB関数のように色指定が可能だ。
この関数を使えば、VBのRGB関数のように色指定が可能だ。
あ~、ちかれたっ。
… 次回へ続く …