Bonjour BOTTIN Laurence - DGMT/SG/AG2
Message du 2007-01-11 15:01:
Bonjour,
Dans OOo si j'ouvre un nouveau classeur à partir d'un modèle, les macros s'exécutent dans le nouveau classeur. Par contre si à partir d'une application MS Office et de VB je créé un nouveau classeur à partir d'un modèle, les macros ne sont pas actives. Le problème vient de la ligne ArgsDoc(0).Value mais je ne sais pas du tout comment utiliser une contante de l'API depuis vba.

Voici un extrait du code :
Set ArgsDoc(0) = ServiceManager.Bridge_getStruct("com.sun.star.beans.PropertyValue")
ArgsDoc(0).Name = "MacroExecutionMode"
ArgsDoc(0).Value = ServiceManager.Bridge_getStruct("com.sun.star.Document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN")
On n'y arrive pas comme ça. Bridge_getStruct sert à obtenir une structure Uno, pas une constante. A ma connaissance il n'y a pas de moyen d'obtenir une constante Uno à partir de son nom (alors que c'est réalisable par CoreReflection pour un enum). Il suffit de mettre la valeur de la constante, qu'on trouve écrite dans la description IDL du SDK, donc peu susceptible de changement.

Question subsidiaire :
Existe-t-il une bonne documentation en français sur l'API, l'abordant par le côté objet sur le principe du developper's guide. L'anglais n'est pas ma cup of tea et je découvre la programmation objet avec OOo.

Non. Même une bonne traduction du Developer's Guide serait assez difficile à lire. Le concept objet Uno est un peu spécial, et l'héritage multiple rend les choses assez complexes. Et l'aspect Java avec son typage strict rend les codages API plutôt indigestes.

Il existe chez divers éditeurs des livres en français sur la programmation/conception objet. Eventuellement on peut l'aborder via un livre d'initiation sur Java. Cela a l'avantage de donner des éclairages sur certains concepts rencontrés dans l'API et sa doc, qui sont directement repris des principes de Java.

   Bernard

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à