2010-07-21 9 views
6

Próbuję skryptu mojego dokumentu OpenOffice (Writer w moim przypadku), aby zrobić kilka prostych rzeczy z widżetami. Mianowicie chciałbym skopiować tekst z widżetu do widżetu. W tym celu chcę uzyskać jeden komponent, a następnie uzyskać z niego tekst.Skrypty OpenOffice Forms z VB lub pytonem

Próbowałem zrobić czegoś takiego:

document = ThisComponent.CurrentController.Frame 

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

Ani wersja # 1 # 2, ani pracy. Kompilator VB wypowiada, że ​​"Pole tekstowe 1" nie jest dostępne, jednak mam ten komponent w mojej formie. Domyślam się, że próbuję pobrać ten komponent z niewłaściwego miejsca, np. nie jest to ramka. Po prostu nie mogę zrozumieć, jaka jest struktura dokumentu.

Wydaje się to dość łatwym zadaniem, jednak nie mogę znaleźć żadnej specyfikacji OpenOffice, jak w przypadku dostępu do obiektów OO UNO z VB lub Pythona.

+0

Jakiej wersji OpenOffice lub LibreOffice używasz? –

Odpowiedz

1

Nie mam doświadczenia ze skryptami openoffice, ale znalazłem te przykłady, zauważ, że nigdy nie używają getByName na samym dokumencie, ale zawsze na jakiejś jego części.

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") 

można znaleźć resztę w tym dużych pdf na http://oqei.free.fr/echange/VBA/Programmation_OpenOffice_org_3_ed1_v1.pdf, to po francusku, ale kod jest uniwersalna prawda? Mam nadzieję, że pomaga ..

2

Dzień dobry.

jeśli zdecydujesz użyć VB, trzeba wiedzieć, to:

VBA: Zgodność między OpenOffice.org Basic i VBA dotyczy z OpenOffice.org języka podstawowego, jak również bibliotekę wykonania. Interfejs API OpenOffice.org i edytor okien dialogowych nie są kompatybilne z VBA (ujednolicenie tych interfejsów spowodowałoby, że wiele z koncepcji dostępnych w OpenOffice.org było niemożliwe).

jeśli to będzie python:

OpenOffice.org 3.1 jest dostarczany z języka skryptowego Python, wersja 2.6.1. Starsze wersje OpenOffice.org są dostarczane w wersji Python 2.3.4. Ta dystrybucja Pythona jest dostarczana z modułem Uno, który łączy API UNO z językiem skryptowym Pythona. Aby uruchomić tę wersję Pythona na Linuksie , możesz przejść bezpośrednio do PATH OpenOffice.org. I jak jeden oczekiwałby z jakąkolwiek dystrybucją Pythona, OOo-Python może być uruchamiany również z linii komend. Jeśli masz już oddzielną instalację Pythona , możesz zaimportować do niej moduł uno (most Python-UNO), korzystając z tych instrukcji. Jeśli masz już zainstalowaną inną wersję Pythona w systemie Windows, możesz również uzyskać dostęp do interfejsu API UNO za pomocą mostu COM zamiast mostu Python. Wymaga dodatkowego modułu pywin32, aby Python mógł komunikować się z COM. Uwaga: , że chociaż interfejs UNO API jest jednolity, implementacja przez dwa mosty jest nieco inna, więc składnia wymagana przez każdą z nich jest czasami inna niż .

Python UNO bridge

UPD: ooobloger może pomóc w zrozumieniu pytona i integracji uno.