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
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]