2011-06-23 67 views
1

有人知道如何在OpenOffice Basic Macro中選擇所有使用過的單元嗎?我發現這個其他的問題,告訴如何與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。也許它正在包裝我可以做的一些其他的電話?

我在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,所以不能提供基本的解決方案,但我希望這條巨蟒的回答確實還幫助。

0

這有點複雜。 sheet.getCellRangeByPosition返回一個table :: XCellRange,而gotoEndOfUsedArea則在sheet :: XUsedAreaCursor中定義。

但是你應該能夠在兩者之間進行轉換,因爲它們是由同一個類在內部實現的。

0

讓我猜,當你遇到這個錯誤時,你從Star Basic IDE運行這段代碼。這實際上很常見。問題是,當您從IDE運行代碼時,「ThisComponent」語句返回對IDE的引用,而不是電子表格文檔。雖然電子表格文檔有一個「getSheets」方法,但宏開發IDE沒有這種方法。因此,Star Basic無法找到屬性或方法的錯誤。

+0

我結束了從未解決這個問題,只是使用不同的方法。但'getSheets'工作正常。 'getByName(sheetName)'也可以。問題是'gotoEndOfUsedArea'在'range'對象中不存在。 –