OpenOffice Basic全选

时间:2011-06-23 13:37:27

标签: openoffice.org openoffice-calc uno

有谁知道如何在OpenOffice Basic Macro中选择所有使用过的单元格?我发现了另一个问题,告诉如何使用pyUno:

OpenOffice pyuno "select all"

我尝试在Basic中编写相同的代码,但最后一行出错:

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

错误是Property or method not found,所以我猜这意味着Basic不存在python方法gotoEndOfUsedArea。也许它正在包装我可以做的其他一些电话?

我在使用OpenOffice 3.1.1。

3 个答案:

答案 0 :(得分:2)

gotoEndOfUsedArea()属于游标对象,而不是范围对象。所以你必须将Basic等效于

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答案仍然有用。

答案 1 :(得分:0)

它有点复杂。 sheet.getCellRangeByPosition返回一个table :: XCellRange,而gotoEndOfUsedArea在sheet :: XUsedAreaCursor中定义。

但是你应该能够在两者之间施放,因为它们是由同一个类在内部实现的。

答案 2 :(得分:0)

我猜,当您收到该错误时,您从Star Basic IDE运行此代码。这实际上很常见。问题是,当您从IDE运行代码时,“ThisComponent”语句将返回对IDE的引用,而不是电子表格文档。虽然电子表格文档具有“getSheets”方法,但宏开发IDE没有这样的方法。因此,Star Basic无法找到属性或方法的错误。