6 messages in org.openoffice.fr.progRe: [prog] Programmer OpenOffice avec...
FromSent OnAttachments
Didier ALAINAug 18, 2004 1:10 am 
Serge LE LOUARNEAug 18, 2004 8:57 am 
Bernard MarcellyAug 18, 2004 9:43 am 
Didier ALAINAug 18, 2004 10:32 am 
Bernard MarcellyAug 19, 2004 5:20 am 
Didier ALAINAug 20, 2004 2:00 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [prog] Programmer OpenOffice avec Visual BasicActions...
From:Didier ALAIN (didi@laposte.net)
Date:Aug 20, 2004 2:00:26 am
List:org.openoffice.fr.prog

At 2004-08-18 19:33, Didier ALAIN wrote:

Bonjour Alain,

Visual Basic (VBA, pour être exact) n'est pas utilisable

avec OOo.

VBA est différent dans sa philosophie de l'API OOo. Mais sous Windows, avec COM, il est possible de piloter OpenOffice.org en Visual Basic et d'autres langages. Voir, en anglais, la section Code Snippets dans OOoForum <http://www.oooforum.org/>. En particulier, lire le fil <http://www.oooforum.org/forum/viewtopic.php?t=9815> qui indique le codage pour Visual Basic, Delphi, PHP, et d'autres langages. En gros, une fois la connexion COM réussie, le codage API est similaire à celui des macros Basic, à part la syntaxe. Je ne pratique pas VB, mais j'y arrive en Delphi. Pour le HowTo, il serait certainement tout à fait utile.

Bonne soirée Bernard

Merci Bernard,

Le problème est qu'en faisant le tour des forums OOo, on ne trouve que quelques dizaines de messages concernant la programmation par l'intermédaire de COM (précisément le pont Automation-UNO), et ils se résument tous à la "mise à l'étrier". Une fois passé cette étape, le chemin est long pour commencer à être à l'aise dans l'API. En particulier, les difficultés liées au pont Automation-UNO ne sont pas très documentées en dehors du devguide. Tu as sûrement une bonne connaissance de ces problèmes si tu programmes en Delphi. Un de mes soucis actuel est la gestion d'évènements, pour laquelle la mécanique en VB reste très compliquée (du moins pour moi pour le moment).

Je n'ai pas encore pratiqué ça avec COM, j'ai démarré il y a une semaine! Dans le Dev'Guide ch 3.4.4 on trouve une explication et un exemple sur l'implémentation de listeners avec VB, mais tu as dû la lire.

Le doc en l'état (brouillon en cours de compréhension/rédaction) se trouve à : http://www.kalitech.fr/clients/doc/APIOOo.html

Petite remarque sur les constantes nommées (qu'elles soient des constantes vraies ou des constantes énumérées) : le nom exact de la constante est le nom complet, à partir de com.sun.star.... Et évidemment, depuis un programme externe on n'a pas ces constantes. Il faut les définir localement avec la bonne valeur. On les trouve dans les fichiers de la branche idl/ du SDK.

Pour ce que tu appelles accès aux propriétés, cela ne concerne que la création d'une structure pour l'envoyer en argument d'une méthode. C'est heureusement peu courant. Dans l'autre sens, on récupère la structure et on l'utilise directement, par exemple pour modifier une ligne d'un tableau Writer: maLigne= lesLignes.getByIndex(2) maLigne.Height= 1000 maLigne.IsAutoHeight= False

Bernard

Bonjour et Merci Bernard,

Je n'ai pas encore pratiqué ça avec COM, j'ai démarré il y a une semaine! Dans le Dev'Guide ch 3.4.4 on trouve une explication et un exemple sur l'implémentation de listeners avec VB, mais tu as dû la lire.

Oui, je l'ai lue, c'est maigrichon. Si tu fais des progrès notables sur la gestion des évènements via le pont Automation-UNO, n'hésite pas à partager !!

Petite remarque sur les constantes nommées (qu'elles soient des constantes vraies ou des constantes énumérées) : le nom exact de la constante est le nom complet, à partir de com.sun.star.... Et évidemment, depuis un programme externe on n'a pas ces constantes. Il faut les définir localement avec la bonne valeur. On les trouve dans les fichiers de la branche idl/ du SDK.

OK, marqué en révision dans mon doc.

Pour ce que tu appelles accès aux propriétés, cela ne concerne que la création d'une structure pour l'envoyer en argument d'une méthode. C'est heureusement peu courant.

Assez courant quand même (paramètres d'ouverture ou d'enregistrement des fichiers, par exemple)

Dans l'autre sens, on récupère la structure et on l'utilise directement, par exemple pour modifier une ligne d'un tableau Writer: maLigne= lesLignes.getByIndex(2) maLigne.Height= 1000 maLigne.IsAutoHeight= False

Merci : c'était effectivement aussi approximatif dans la formulation que ça l'était dans ma tête. C'est maintenant plus clair et corrigé grâce à ton court mais puissant coup de projecteur !

Je vais traduire le doc en anglais ce week-end et ne maintiendrai que la version anglaise, faute de temps. Si des volontaires dans la ML veulent maintenir la VF, qu'ils se fassent connaitre !

cf derniers posts de http://www.oooforum.org/forum/viewtopic.php?t=11439

Accédez au courrier électronique de La Poste : www.laposte.net ; 3615 LAPOSTENET (0,34€/mn) ; tél : 08 92 68 13 50 (0,34€/mn)