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
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Merci pour votre patience Bernard,
effectivement la solution était déjà postée dans votre message du
22/8
Reste à regler le problème du renvoi d'information à l'appelant.
Existe-t-il un service au niveau de soffice qui permet de savoir quels
sont les docs ouverts? et un moyen d'accéder à un doc déja ouvert ?
Philippe
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]