【问题标题】:OpenOffice Basic Select AllOpenOffice Basic 全选
【发布时间】:2011-06-23 13:37:27
【问题描述】:

有谁知道如何选择 OpenOffice Basic 宏中所有使用的单元格?我发现this other question告诉如何使用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,所以我猜这意味着基本不存在python方法gotoEndOfUsedArea。也许它正在包装我可以拨打的其他电话?

我使用的是 OpenOffice 3.1.1。

【问题讨论】:

    标签: openoffice.org openoffice-calc uno


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 我最终没有解决这个问题,只是使用了不同的方法。但是getSheets 工作正常。 getByName(sheetName) 也可以正常工作。问题是gotoEndOfUsedArea 不存在于range 对象上。
        猜你喜欢
        • 1970-01-01
        • 2011-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多