6 messages in org.openoffice.fr.progRe: [prog] appel de macros
FromSent OnAttachments
PhilippeAug 26, 2005 5:55 am 
Bernard MarcellyAug 26, 2005 7:32 am 
PhilippeAug 26, 2005 8:49 am 
Bernard MarcellyAug 26, 2005 9:55 am 
PhilippeAug 26, 2005 11:40 am 
PhilippeAug 26, 2005 11:37 pm 
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] appel de macrosActions...
From:Philippe (plap@nordnet.fr)
Date:Aug 26, 2005 11:40:39 am
List:org.openoffice.fr.prog

Bernard Marcelly a écrit :

Bonjour Philippe, Message du 2005-08-26 17:50:

Permet-elle d'appeler une macro d'un document à partir d'une macro d'un autre document.

Rien de changé par rapport à la version 1.1

Dans votre livre, vous dites que c'est possible moyennant une acrobatie logicielle ? faut-il par exemple passer par le shell ?

J'ai déjà répondu récemment dans le contexte COM avec Delphi. Il faut utiliser le dispatcher. En Basic cela donne ceci.

Supposons ouvert un document appelé MessageBox.sxw contenant une bibliothèque maBibli, avec dans son Module1 cette macro: Sub afficher(texte as string) MsgBox(texte) End Sub

Ouvrons un deuxième document contenant cette macro: Sub lancerMacroAilleurs dim fenetreDoc as object, dsp as object fenetreDoc = StarDesktop.CurrentFrame dsp = CreateUnoService("com.sun.star.frame.DispatchHelper") rem -- ici une ligne très longue !!! dsp.executeDispatch(fenetreDoc, "macro://MessageBox/maBibli.Module1.afficher(Hello OOo!)", "", 0, Array())

msgbox("macro lancée") End Sub

Lancer la macro "lancerMacroAilleurs". On verra s'afficher "Hello OOo!" puis à la fermeture de la boîte, le message "macro lancée". On voit que la macro "afficher" a interprété tout le texte comme un seul argument. Les arguments d'appel de la macro sont séparés par des virgules, chaque argument étant toujours récupéré par la macro comme un String. La macro appelée ne peut pas renvoyer d'information à son appelant (en tous cas, je n'ai pas trouvé comment faire).

Bernard