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

マクロの作成、スクリプトの作成、APIの使い方
返信する
opop
記事: 7
登録日時: 12月 20, 2008, 1:00 am

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

投稿記事 by opop »

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」 のように使っても良いのですか。
tani
記事: 60
登録日時: 6月 13, 2008, 10:12 am

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

投稿記事 by tani »

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
opop
記事: 7
登録日時: 12月 20, 2008, 1:00 am

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

投稿記事 by opop »

役に立つコードをどうもありがとうございます。
返信する

“マクロと UNO API”に戻る