2011-06-23 5 views
1

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

OpenOffice pyuno "select all"

を私は基本的に同じコードを書いてみましたが、私は最後の行にエラーが表示されます。

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

エラーはProperty or method not foundなので、PythonのメソッドgotoEndOfUsedAreaがBasicには存在しないことを意味します。おそらく私は作ることができる他の呼び出しをラッピングしていますか?

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

答えて

2

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) 

への基本的な同等を行う必要があり、私は基本とOpenOfficeのに慣れていないですので、基本的でソリューションを提供することはできませんが、私はこのPythonの答えはまだ助けるん願っています。

0

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

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

0

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

+0

これは決して解決せず、別のアプローチを使用しています。しかし、 'getSheets'は正常に動作します。また、 'getByName(sheetName)'は正常に動作します。問題は 'gotoEndOfUsedArea'が' range'オブジェクトに存在しないことです。 –

関連する問題