1

OpenOffice Basic マクロで使用されているすべてのセルを選択する方法を知っている人はいますか? 私はpyUnoでそれを行う方法を伝えるこの他の質問を見つけました:

OpenOfficeピュノ「すべて選択」

Basic で同じコードを書いてみましたが、最後の行でエラーが発生します。

sheet = ThisComponent.getSheets().getByName(sheetName)
range = sheet.getCellRangeByPosition(0, 0, 0, 0)
range.gotoEndOfUsedArea(True)

エラーProperty or method not foundgotoEndOfUsedArea. おそらく、私が行うことができる他の呼び出しをラップしていますか?

私は OpenOffice 3.1.1 を使用しています。

4

3 に答える 3

3

gotoEndOfUsedArea() は、範囲オブジェクトではなく、カーソル オブジェクトに属しています。したがって、基本的に同等のことを行う必要があります

sheet = ThisComponent.getSheets().getByName(sheetName)
cursor = sheet.createCursor()
cursor.gotoEndOfUsedArea(True)
address = cursor.RangeAddress
endcol = address.EndColumn
endrow = address.EndRow
range = sheet.getCellRangeByPosition(0, 0, endcol, endrow)

私は Basic と OpenOffice に精通していないため、Basic で解決策を提供することはできませんが、この python の回答が引き続き役立つことを願っています。

于 2014-08-19T14:57:12.280 に答える
0

エラーが発生したときに、StarBasicIDEからこのコードを実行したと思います。これは実際には非常に一般的です。問題は、IDEからコードを実行すると、「ThisComponent」ステートメントがスプレッドシートドキュメントではなくIDEへの参照を返すことです。また、スプレッドシートドキュメントには「getSheets」メソッドがありますが、マクロ開発IDEにはそのようなメソッドはありません。したがって、StarBasicがプロパティまたはメソッドを見つけることができなかったというエラー。

于 2012-07-19T21:00:40.423 に答える
0

もう少し複雑です。sheet.getCellRangeByPosition は table::XCellRange を返しますが、gotoEndOfUsedArea は sheet::XUsedAreaCursor で定義されます。

ただし、これらは同じクラスによって内部的に実装されているため、2 つの間でキャストできるはずです。

于 2011-07-07T00:31:30.520 に答える