Comment intercepter les exceptions UNO?

Bonjour,
Sur LibreOffice V24.2, sous Linux Mint 22.1, je cherche le moyen de vérifier la présence, avant de lancer son exécution, d’une macro Basic dans un fichier Calc.
Mais le mécanisme “On Error” sur Dispatcher.executeDispatch avec l’URL de la macro (bibliothèque, module, macro) n’intercepte pas l’erreur … quand la macro n’existe pas.
Connaissez-vous le moyen de gérer les exceptions UNO ?
Merci de votre aide

Je reposte ce topic car je n’avais pas affecter les bons TAGs et je n’ai pas réussi à les modifier (?)

Bonjour,

le dispatcher n’est pas un mode de développement standard. Il convient pour des macros rapides et one-shot, mais pour des développements “sérieux” je conseillerais de privilégier les appels à l’API.

En ce qui concerne votre question, j’ignore si le dispatcher répercute les erreurs (et serais tenté, au vu de ce que vous rapportez, de dire que non). Les appels à l’API, en revanche, permettent toujours ces interceptions.

Mais je ne saisis pas le problème que vous essayez de gérer. Vous voulez lancer une macro supposée exister dans un fichier Calc depuis “l’extérieur” (quel extérieur ? ligne de commande ? macro dans un autre document LibreOffice ?) Pouvez-vous être plus précis ?

Merci,
Je précise : j’ai besoin d’initialiser, à l’ouverture d’un fichier Calc, un tableau en variable globale à partir de données d’une feuille de calcul paramètre de ce fichier.
J’ai écrit la macro Basic qui assure ça : lecture des cellules et valorisation du tableau.
Je voulais associer cette macro à l’évènement Ouvrir le document mais j’ai compris (d’un post précédent) que l’assignation ne peut pas porter sur une macro enregistrée dans un module du document mais dans un module de “Mes Macros”, qui s’appliquera donc à l’ouverture de tous les documents.
J’ai donc une macro, de niveau application sur l’évènement Ouvrir … , qui doit lancer la macro du document Calc si elle existe, j’essaye de monter une solution générique qui vérifie l’existence de library/module/macro (nommés spécifiquement) et je n’arrive pas à intercepter l’erreur d’exécution de la macro par Dispatcher.executeDispatch en cas d’absence de macro d’initialisation …
J’espère être clair et ne pas entrer trop dans le détail …
Je n’avais pas envisagé la solution API, j’ai une expérience VBA et quelques réflexes à adapter :slight_smile:

Pourquoi ne pas lier les deux classeurs ? Cela éviterait la gymnastique macroteuse (marteau-pilon, mouche, tout ça). À moins qu’il n’y ait des subtilités qui m’échappent ?

Lisez ceci : Forum OpenOffice LibreOffice NeoOffice - [Résolu][Basic] Message d'erreur vnd.sun.star.script à l'ouverture d'un document/feuille - (Consulter le sujet)
La méthode isLibraryLoaded permet de savoir si votre bibliothèque a bien été chargée.