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」 のように使っても良いのですか。
Calcシート内の値があるすべてのセルを範囲とするプロパティ
Re: Calcシート内の値があるすべてのセルを範囲とするプロパティ
OOo Basic(UNO)のCursorオブジェクトには
collapseToCurrentRegion
とか
gotoEndOfUsedArea
とかいうメソッドがあります。それらを使えばお望みの情報は取得できると思いますが、
VBAと同じかといわれると、同じじゃないという回答になると思います。
(Cursorオブジェクトの取得方法だったりこれらのメソッドの使い方/サンプルコードだったりは
適当にググったりapi.openoffice.orgで調べたりすると出てきます)
ただ元のVBAのコードはひょっとしたら「Option VBASupport 1」をつけるとOpenOffice.orgでも
そのまま通ったりするかもしれません。そちらの可能性も調べてみると良いかもしれません。
追記: ちょっと不親切すぎるかなと思ったので、サンプルを。
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
Re: Calcシート内の値があるすべてのセルを範囲とするプロパティ
役に立つコードをどうもありがとうございます。