Top > OOobbs3 > 14

OOobbs3/14 Edit

  • サマリ: 表の選択範囲の行列
  • 環境: Writer
  • 状態: 未解決
  • 投稿者: robbieprise?
  • 投稿日: 2010-08-05 (木) 17:09:37

質問 Edit

今日も感謝でついてる♪

立て続けの質問ですみません。

表の選択範囲の行列を知りたくて以下のようなコードを書きました

oDoc = ThisComponent
oController = oDoc.getCurrentController()
oViewCursor = oController.getViewCursor()
oTable = oViewCursor.TextTable
oSelect = oDoc.getCurrentSelection()
sRangeName = oSelect.getRangeName()
oCellRange = oTable.getCellRangeByName(sRangeName)
aAddress = oCellRange.getRangeAddress

しかし、getRangeAddresをしようとするとエラーになってしまいます。

Writerの表ではCalcと同じように取得出来ないという事でしょうか?

回答 Edit

  • Writer の表は柔軟な構造を持ったためにアドレスが分け分からなくなっています。また、Writer の表のセルやセル範囲オブジェクトは範囲のアドレスを css.table.RangeAddress などで取得するメソッドを持っていないようです。

Writer の表は Calc の様な完全なグリッドではありません。たとえば、A1 を水平方向に分割した場合次のようなセル名を持った表が出来上がります。

A1B1C1D1
A2B2C2

この表には D2 セルがありません。表から getCellRangeByName("A1:D2") としようとするとエラーになります。

マクロなどから扱うにはあまりいい構造とは思えません。表が複雑になるとマクロなどから、あるセルの下に表示されているセルを特定することすらできなくなります。API から表のセルの位置などの情報が取得できないことが話題になってからは複雑な表をマクロから利用する人がいなくなりました。

避けられるのであれば Writer の表を取り扱わないことをお勧めします。Calc のシートの方が大分楽です。

メソッドが無いといったようなことは http://extensions.services.openoffice.org/en/project/MRI を利用してみてください。質問するより早く分かると思います。

  • はにゃ? 2010-08-05 (木) 18:39:04
  • 回答感謝します。 -- ハリ・セルダン 2010-08-16 (月) 15:23:43

感想,コメント,メモ Edit



Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes