Calcシート内の値があるすべてのセルを範囲とするプロパティ

マクロの作成、スクリプトの作成、APIの使い方

Calcシート内の値があるすべてのセルを範囲とするプロパティ

投稿記事by opop » 12月 27th, 2008, 12:00 am

openoffice のマクロ言語についてお聞きしたいのですが
Calcシートにびっしりと数値を入力している場合
その中の最終の行番号や列番号を表すためにはExcelなら
Worksheetオブジェクトの値があるすべてのセルを範囲とする UsedRange プロパティというものがあり

Sub CellCnt()
Dim lngYCnt As Long
Dim intXCnt As Integer

lngYCnt = Worksheets("Sheet1").UsedRange.Rows.Count
intXCnt = Worksheets("Sheet1").UsedRange.Columns.Count
MsgBox "最終行は" & intYCnt &"行、" & _
"最終列は" & lngXCnt & "列です"
End Sub

のように使うらしいですが
UsedRangeのようなプロパティはopenofficeに存在するのですか。
またそれは 「.プロパティ.Rows.Count」 や 「.プロパティ.Columns.Count」 のように使っても良いのですか。
opop
 
記事: 7
登録日時: 12月 20th, 2008, 1:00 am

Re: Calcシート内の値があるすべてのセルを範囲とするプロパティ

投稿記事by tani » 12月 27th, 2008, 4:45 pm

OOo Basic(UNO)のCursorオブジェクトには
collapseToCurrentRegion
とか
gotoEndOfUsedArea
とかいうメソッドがあります。それらを使えばお望みの情報は取得できると思いますが、
VBAと同じかといわれると、同じじゃないという回答になると思います。
(Cursorオブジェクトの取得方法だったりこれらのメソッドの使い方/サンプルコードだったりは
適当にググったりapi.openoffice.orgで調べたりすると出てきます)

ただ元のVBAのコードはひょっとしたら「Option VBASupport 1」をつけるとOpenOffice.orgでも
そのまま通ったりするかもしれません。そちらの可能性も調べてみると良いかもしれません。

追記: ちょっと不親切すぎるかなと思ったので、サンプルを。
コード: 全て選択   展開ビュー折りたたみビュー
Sub Main
oRange_A1 = ThisComponent.getSheets().getByIndex(0).getCellRangeByName("A1")
oCursor = ThisComponent.getSheets().getByIndex(0).createCursorByRange(oRange_A1)

oCursor.collapseToCurrentRegion
Msgbox oCursor.getRows.Count
Msgbox oCursor.getColumns.Count

oCursor.gotoEndOfUsedArea(true)
Msgbox oCursor.getRows.Count
Msgbox oCursor.getColumns.Count
End Sub
tani
 
記事: 60
登録日時: 6月 13th, 2008, 10:12 am

Re: Calcシート内の値があるすべてのセルを範囲とするプロパティ

投稿記事by opop » 12月 28th, 2008, 7:52 pm

役に立つコードをどうもありがとうございます。
opop
 
記事: 7
登録日時: 12月 20th, 2008, 1:00 am


Return to マクロと UNO API

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[1人]