1

有谁知道如何选择 OpenOffice Basic 宏中所有使用的单元格?我发现this other question告诉如何用pyUno做到这一点:

OpenOffice pyuno“全选”

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

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

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

我在 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

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

但是您应该能够在两者之间进行转换,因为它们是由同一个类在内部实现的。

于 2011-07-07T00:31:30.520 回答
0

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

于 2012-07-19T21:00:40.423 回答