2010-07-21 35 views
6

我試圖編寫我的OpenOffice文檔(編寫器在我的案例中)來使用小部件做一些簡單的事情。也就是說,我想將文本從小部件複製到小部件。爲此,我想獲取一個組件並從中獲取文本。使用VB或python編寫OpenOffice Forms腳本

我一直試圖做某事像這樣:

document = ThisComponent.CurrentController.Frame 

oDocument  = ThisComponent 
oTextBoxFrom = document.getByName("Text Box 1") # 1 
oTextBoxFrom = oDocument.getByName("Text Box 1") # 2 

無論是形式#1#也不工作2。 VB編譯器吐出「文本框1」不可訪問,但我有我的表單中的組件。我的猜測是我試圖從錯誤的地方得到這個組件,例如。不是它的框架。我只是無法弄清楚文檔的結構。

這似乎是一個非常簡單的任務,但是我無法找到任何OpenOffice規範來訪問VB或Python中的OO UNO對象。

+0

什麼版本的OpenOffice或LibreOffice使用? – 2012-06-01 09:55:46

回答

1

我沒有使用openoffice腳本的經驗,但我找到了這些示例,請注意,它們從不在文檔本身上使用getByName,但始終在其某些部分使用getByName。

docCalc = ThisComponent 
maFeuille = docCalc.Sheets.getByName("leCSV") 
.... 
for f = 0 to lesFamilles.Count -1' chaque famille 
nomFam = lesFamilles.ElementNames(f) 
uneFamille = lesFamilles.getByName(nomFam) 
... 
monDocument.TextTables.hasByName("Finances") 
... 
lesSections = monDocument.TextSections 
sectA = lesSections.getByName("Aline") 

你可以在http://oqei.free.fr/echange/VBA/Programmation_OpenOffice_org_3_ed1_v1.pdf找到在這個大的PDF休息,這是在法國,但代碼是通用的吧? 希望它有幫助..

2

美好的一天。

如果您選擇使用VB,你必須知道這一點:

VBA:OpenOffice.org Basic和VBA之間的兼容性與 OpenOffice.org的Basic語言以及運行時庫。 OpenOffice.org API和對話框編輯器與VBA 不兼容(將這些接口標準化將使得OpenOffice.org中提供的許多概念 變得不可能)。

這是否是python

OpenOffice.org 3.1附帶Python腳本語言,版本2.6.1 。較早的OpenOffice.org附帶Python 2.3.4版。此Python發行版隨Uno模塊一起提供,該模塊將UNO API連接到python腳本語言。要在 Linux上運行此版本的Python,可以直接轉到OpenOffice.org PATH。如同任何一個 所期望的那樣,Python的任何發行版都可以從命令行運行 。如果您已經安裝了單獨的Python 2.6,則可以使用這些說明將uno模塊(Python-UNO橋)導入到它。如果您已在Windows上安裝了 不同版本的Python,則還可以使用COM橋而不是Python橋訪問 UNO API。 需要附加pywin32模塊,以便Python可以與COM通信。注意 雖然UNO API是統一的,但兩個 網橋的實現略有不同,所以每個網絡所需的語法也有所不同,其中 也有所不同。

Python UNO bridge

UPD:ooobloger可能會幫助您使用Python和UNO集成的理解。