「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:2
総数:1867
現在:2


com.sun.star.・・・・XCellRange などの実態や使い方

ページOpenOffice.org FAQの登録ページ
投稿者Mr_Happy
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2011-03-31 09:36:34 (木)
OSWin7
依存するページ
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

いつも学ばせていただいております。

com.sun.star.・・・・XCellRange 等

の実態や使い方が全く分かりません。 ある本では

シートを取得したら「XCellRange」インターフェイスでセルにアクセスできます。
「XCellRange」はシート中の一定範囲のせるをまとめたもので、
「getCellByPosition」で位置を指定すると・・・・

と書かれており、以下のマクロを実行してみてください、とあります。

MsgBox ThisComponent.Sheets(0).getCellByPosition(0,0).Value

ここで私が知りたいのは、上の説明で出てきた「XCellRange」がマクロ中にないことです。これはどういうことなのでしょうか。 「XCellRange」インターフェイスでセルにアクセスできます、とありながら実際のマクロには無い!! 私には不思議で全く意味不明です。 もともと、sun.com.・・・がわからないですし。

というわけで、少し慣れてきたOOo、次のステップを目指したいのでどなたかご教授をお願いします。


参考になるサイトなど

M.Kamataki (2011-03-31 12:27:35 (木))

まず、OpenOffice.orgのマクロに関しては以下が1次情報です。必ず目を通してください。

OpenOffice.org BASIC プログラミングガイド
http://wiki.services.openoffice.org/wiki/JA/Documentation/BASIC_Guide

OpenOffice.org BASIC プログラミングガイド(英語)
http://wiki.services.openoffice.org/wiki/Documentation/BASIC_Guide
(日本語のページは、更新されていない可能性があるので最新情報を英語のページで確認してください)

OpenOffice.org Developer's Guide
http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/OpenOffice.org_Developers_Guide

日本語のプログラミングガイドのサイトの下の方の「詳細情報」をご覧ください。ご質問と関係するのが「OpenOffice.org API コンポーネント」です。さて、これらのコンポーネントの詳細は以下を見ろと書いてありますね。

API reference
http://api.openoffice.org/docs/common/ref/com/sun/star/module-ix.html

ご質問の「XCellRange」は実は「XCellRangesAccess」の間違いです。「XCellRangesAccess」の「API reference」の説明が以下です。

http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/XCellRangesAccess.html

こちらを見ると、「getCellByPosition」「getCellRangeByPosition」「getCellRangesByName」の使い方がわかるという仕掛けですね。

「com.sun.star…」については、プログラミングガイドの以下のページあたりからお読みください。

OpenOffice.org API について
http://wiki.services.openoffice.org/wiki/JA/Documentation/BASIC_Guide/API_Intro

OpenOffice.orgの場合は、情報は確かに少ないですが、「これを見るべき」というものはピンポイントでご指摘できるので、逆に分かりやすいと思っています。

XCellRange

はにゃ? (2011-03-31 13:02:16 (木))

ある本を持っていないのではっきりとはしませんが、「シートを取得したら」とあるので com.sun.star.table モジュールの方の XCellRange インターフェースのことのはずです。
http://api.openoffice.org/docs/common/ref/com/sun/star/table/XCellRange.html

無題

tani (2011-03-31 14:16:28 (木))

インターフェース = メソッド集って感じかなーと思います。(そういうレベルの話であってます?)
で、Javaとかで実装する際にはメソッドを使う前にインターフェースの指定とかしないといけませんが、basicではサクッと省略して、getCellByPositionとかメソッドだけでいけます。

Re: XCellRange

M.Kamataki (2011-03-31 14:31:33 (木))

はにゃ?さん、フォローありがとうございます。com.sun.star.table モジュールの方でしたか。

API referenceで調べて以下を見るとさらに理解が深まるかと。

http://hermione.s41.xrea.com/pukiwiki/pukiwiki.php?FrontPage

大変~2 難しいですね

Mr_Happy (2011-03-31 15:51:18 (木))

M.Kamatakiさん、はにゃ? さん 早速ありがとうございます。

XCellRangeの件
interface XCellRangesAccess: getCellByPosition(
                             [in] long  nColumn, [in] long  nRow, [in] long  nSheet)
interface XCellRange: getCellByPosition(
                             [in] long  nColumn, [in] long  nRow)

となっていましたが、同じgetCellByPositionでもインターフェイスが違うと引数も違うと言うことなのでしょうかね??

参考頁をざっと見ましたが、難しいですね。今のところ、おおよそチンプンカンプンの初めて見る世界ですね。
昔々C言語を独学で始めた時より難しそう。 まぁ、無理せずぼちぼちゆきます。

時々英語は苦手という質問者がいますが私もその口で・・・

参考頁は写したので、完了にしておきます。

「com.sun.star・・・の指定を省き」 ですか!

Mr_Happy (2011-03-31 16:12:03 (木))

tani さんありがとうございます。

メソッド集って感じかなーと思います。(そういうレベルの話であってます?)

あってるか否かもよくわからないのです・・・

メソッドを使う前にインターフェースの指定とかしないといけませんが、 
basicではサクッと省略して、
getCellByPositionとかメソッドだけでいけます。

此処かもしれませんね、もともとの質問の大意は?・・・
つまり、com.sun.star・・・の指定を省き、その下にある
getCellByPositionというメソッドを使う、と。

インターフェースの説明

はにゃ? (2011-03-31 18:45:26 (木))

UNO コンポーネント群は CORBA や Java を知っておれば理解しやすいはずです。OOo Basic での場合にはインターフェースについては以下のページを参照してみてください。
http://wiki.services.openoffice.org/wiki/JA/Documentation/BASIC_Guide/Modules,_Services_and_Interfaces

com.sun.star.table.XCellRange と com.sun.star.sheet.XCellRangesAccess の両方のインターフェースをサポートしているオブジェクトは見たことがありませんが、次のように利用できます。

ThisComponent.getSheets().getCellByPosition(0, 0, 0)
ThisComponent.getSheets().getByIndex(0).getCellByPosition(0, 0)

返り値は微妙に違うので注意が必要です。

UNO-言語間のバインディングの実装に依存しますが、Java 用の場合にはインターフェースを指定する必要があります。一方で OOo Basic 用の場合にはその必要はありません。
UNO は言語に依存せずにさまざまな言語から利用できるように設計されたため、メソッドのオーバーロードを許容していません。ですが、インターフェースが異なると同名のメソッドがあることがあります。Basic ではこれを区別できないため、インターフェースを指定する方法があります。普段は使う必要がありませんが次のようにします。
 oDoc.com_sun_star_document_XEventListener_addEventListener(oEventListener)

お名前:
題名: