2010-07-21 10 views
6

J'essaye de scripter mon document OpenOffice (Writer dans mon cas) pour faire des choses simples avec des widgets. A savoir, je voudrais copier le texte du widget au widget. Pour cela, je veux obtenir un composant et obtenir du texte.Scripting OpenOffice Forms avec VB ou python

J'ai essayé de faire qqch comme ceci:

document = ThisComponent.CurrentController.Frame 

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

Ni la version # 1 ni travail n ° 2. Le compilateur VB crache que "Text Box 1" n'est pas accessible, mais j'ai ce composant dans mon formulaire. Je suppose que j'essaie d'obtenir ce composant d'un mauvais endroit, par exemple. pas c'est le cadre. Je n'arrive tout simplement pas à comprendre quelle est la structure du document.

Cela semble être une tâche assez facile, mais je suis incapable de trouver une spécification OpenOffice quant à l'accès aux objets OO UNO à partir de VB, ou python.

+0

Quelle version d'OpenOffice ou de LibreOffice est utilisée? –

Répondre

1

Je n'ai pas d'expérience avec les scripts openoffice mais j'ai trouvé ces exemples, notez qu'ils n'utilisent jamais getByName sur le document lui-même mais toujours sur une partie de celui-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") 

vous pouvez trouver le reste dans ce grand pdf à http://oqei.free.fr/echange/VBA/Programmation_OpenOffice_org_3_ed1_v1.pdf, il est en français mais le code est universel hein? J'espère que ça aide ..

2

Bonne journée.

si vous choisissez d'utiliser un VB, vous devez savoir ceci:

VBA: Compatibilité entre OpenOffice.org Basic et VBA concerne la OpenOffice.org langue de base ainsi que la bibliothèque d'exécution. L'API OpenOffice.org et l'éditeur de dialogue ne sont pas compatibles avec VBA (la standardisation de ces interfaces aurait rendu impossible la plupart des concepts fournis dans OpenOffice.org).

si elle sera python:

OpenOffice.org 3.1 est livré avec le langage de script Python, version 2.6.1. Plus ancien OpenOffice.org est livré avec Python version 2.3.4. Cette distribution Python est fournie avec le module Uno, qui connecte l'API UNO au langage de script Python. Pour exécuter cette version de Python sur Linux , vous pouvez aller directement à OpenOffice.org PATH. Et comme un s'attendrait avec n'importe quelle distribution de Python, OOo-Python peut également être exécuté à partir de la ligne de commande. Si vous avez déjà une installation séparée de Python 2.6, vous pouvez importer le module uno (le pont Python-UNO) en utilisant ces instructions. Si vous avez déjà une version différente de Python installée sur Windows, vous pouvez également accéder à l'API UNO en utilisant le pont COM au lieu du pont Python. Nécessite le module complémentaire pywin32 pour que Python puisse communiquer avec COM. Notez que tandis que l'API UNO est uniforme, l'implémentation par les deux ponts est légèrement différente, donc la syntaxe requise par chacun est également parfois différente.

Python UNO bridge

màj: ooobloger peut vous aider à la compréhension de l'intégration python et uno.