Bonsoir,
Le 14/05/2017 à 18:51, Jaccomard a écrit :
Dans un classeur, j'ai une macro locale (stockée dans
fichier->standard->"suivi"->"impressioninterro".
Cette macro, liée, donc, au classeur, fait appel à une macro installée
grâce à une extension dans "Mes macros et boîtes de
Dialogue"->BibliDocalea->DocAlea_>Moulinette.
L'appel se fait avec : Call BibliDocalea.Docalea.Moulinette(doc3),
où "doc3" est un document writer ouvert avant l'appel.
Si je lance ma macro "impressioninterro", deux cas se produisent :
-si j'ai auparavant édité et resauvegardé "Moulinette", pas de pb, ça
marche.
-sinon, "commande introuvable".
Comment résoudre ce problème ?
Sous LibreOffice, les bibliothèques se trouvent dans deux conteneurs
possibles :
-- le document
-- le conteneur Mes Macros et le conteneur global
Les macros qui se trouvent dans les bibliothèques "Standard" (quel que
soit le conteneur) s'exécutent immédiatement lors de l'appel.
En revanche, les macros qui sont dans d'autres bibliothèques ne
s'exécutent qu'après le chargement des bibliothèques qui les
contiennent, par l'instruction LoadLibrary().
Ton interrogation (les deux cas que tu rencontres) s'explique
exactement de cette manière. En ouvrant la bibliothèque (même sans
rien y faire), tu as exécuté manuellement le fameux LoadLibrary()
kivabien, du coup ton programme fonctionne [1]. Dans le 2e cas le
programme ne fonctionne pas car le LoadLibrary() n'a pas eu lieu.
Pour que ça marche, il faut que, dans ton programme, tu aies ceci :
GlobalScope.BasicLibraries.loadLibrary("BibliDocalea")
GlobalScope fait référence aux conteneurs Mes Macros et global. Par
exemple, si tu utilises des outils livrés avec LibreOffice dans la
bibliothèque "Tools", tu doit d'abord la charger :
GlobalScope.BasicLibraries.loadLibrary("Tools")
Pour info, tu peux éviter les erreurs de chargement en testant
l'existence des bibliothèques :
If GlobalScope.BasicLibraries.hasByName("Tools") Then ...
A noter qu'il me met, quand j'édite, un message d'avertissement sur
Java. Est-ce en rapport ?
mmmm... j'en doute.
[1] C'est d'ailleurs un très bon moyen de charger xray() ;)
Très cordialement,
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.