5 Travailler avec des macros Objectif Notions Applications Langages Connaître et savoir gérer les différents types de macros d OpenOffice.org Macros Toutes Tous 5.1 Les macros 5.1.1 Qu est-ce qu une macro? À l origine, on désignait sous le nom de macro (diminutif de macro-commande) un ensemble de commandes permettant d effectuer une tâche répétitive en une seule étape. Par extension, dans le monde bureautique en particulier, on appelle macro tout programme servant à étendre les fonctions de base d une application. Les macros sous cette acception ont largement été popularisées par la suite Microsoft Office et par Microsoft Visual Basic for Applications (VBA). OpenOffice dispose de ses propres mécanismes de macros, incompatibles avec ceux de Microsoft Office (des outils de conversion et un projet pour faire fonctionner les macros VBA nativement existent, mais ces outils ne fonctionnent que dans des cas précis). Ce chapitre présente les macros sous OpenOffice.org : la manière de les organiser, de les employer et de les créer. Il présente les différents langages utilisables pour écrire des macros, mais ne couvre pas la programmation dans ces langages. Cependant, nous indiquons quelques références à leur sujet.
74 OPENOFFICE.ORG EN PERSPECTIVE 5.1.2 Organisation des macros Les macros peuvent s intégrer à toutes les applications d OpenOffice.org. Le menu Outils > Macros est disponible dans toutes les applications et se présente, sous sa forme la plus complète, tel qu à la Figure 5.1 (notez que la fonction Enregistrer une macro n est disponible que dans Writer et dans Calc. Elle est absente dans Impress, Draw et Base, à l exception pour ce dernier des formulaires qui sont en réalité des documents Writer). Figure 5.1 Menu Outils > Macros. Le menu Enregistrer une macro crée des macros, point que nous traiterons à la section 5.3.1. Exécuter la macro dresse la liste des macros disponibles et permet de les exécuter. Gérer les macros se subdivise en quatre parties correspondant aux quatre langages de programmation dans lesquels on peut programmer une macro. Signature numérique permet de signer une macro pour garantir à un autre utilisateur que c est bien vous qui avez programmé une macro et qu elle n a pas été modifiée depuis votre signature. Gérer les boîtes de dialogue permet d accéder à l éditeur de boîtes de dialogue. Les macros sont organisées hiérarchiquement. Au niveau le plus haut, on trouve le conteneur de bibliothèques (library container), c est-à-dire l élément auquel est ajouté la fonctionnalité. Si celle-ci est particulière à un document, le conteneur sera le document ; sinon, il s agit le plus souvent de l ensemble des macros de l utilisateur, disponibles pour tous les documents. Le conteneur rassemble les bibliothèques (library). Une bibliothèque correspond à un ensemble de fonctionnalités. S il s agit d une bibliothèque Basic, elle est elle-même composée de modules, représentant les différentes parties d une
TRAVAILLER AVEC DES MACROS 75 fonctionnalité (par exemple une partie d affichage de boîtes de dialogue et une partie de traitement de données). Les macros sont les fonctions et routines de ces modules. S il ne s agit pas d une bibliothèque Basic, elle est composée de différents scripts qui sont les macros elles-mêmes (en tant que code exécutable). La fenêtre de gestion des macros propose, au premier niveau, les conteneurs de bibliothèques : Mes Macros, qui héberge vos bibliothèques de macros personnelles accessibles depuis tous les documents ; Macros OpenOffice.org, qui contient les bibliothèques de macros fournies avec OpenOffice.org ; les bibliothèques de macros associées au document. Chaque conteneur présente toutes les bibliothèques qui y sont rattachées, bibliothèques contenant elles-mêmes les modules, puis les macros individuelles (voir Figure 5.2). Figure 5.2 Conteneurs, bibliothèques, modules et macros.
76 OPENOFFICE.ORG EN PERSPECTIVE 5.1.3 Sécurité des macros Les macros sont constituées de code exécutable et, par là-même, peuvent présenter un risque pour la sécurité de vos documents. Les "macro-virus", longtemps associés à la suite Microsoft Office, semblent certes passés de mode, mais une résurgence individuelle n est jamais à exclure 1. Une des règles les plus classiques, lorsqu il s agit de macros, est de ne jamais exécuter de macros provenant d une source à laquelle vous n accordez pas confiance. Pour vous aider dans cette tâche, OpenOffice.org présente plusieurs niveaux de sécurité, accessibles par le menu Outils > Options > OpenOffice.org > Sécurité > Sécurité des macros La fenêtre qui s ouvre est composée de deux onglets : l un définissant la politique générale de sécurité et l autre les sources de confiance. Les sources de confiance peuvent être de deux types : les certificats de confiance et les emplacements de confiance. Une macro signée par un certificat connu et de confiance sera considérée comme étant elle-même de confiance. Il en est de même pour une macro provenant d un document situé dans les répertoires indiqués. Le comportement d OpenOffice.org est paramétrable dans le premier onglet. Le niveau faible ne prend pas en compte les niveaux définis, il autorise l exécution de toutes les macros, quel que soit leur emplacement. Ce niveau est largement déconseillé. Le niveau moyen demande une confirmation à l ouverture des documents qui ne proviennent pas d un certificat ou d un répertoire considérés par l utilisateur comme sûr. Le niveau élevé ne permet d exécuter que les macros signées par un certificat de confiance. Le niveau très élevé ne permet d exécuter que les macros se situant dans un des répertoires prédéfinis. OpenOffice.org et les certificats. Les interactions entre OpenOffice.org et les certificats sont décrites sur le wiki francophone d OpenOffice.org aux adresses http://wiki.services.openoffice.org/ wiki/fr/documentation/comment_utiliser_une_signature_numerique et http://wiki.services.openoffice.org/wiki/detection_de_certificat. Si vous décidez d utiliser des répertoires de confiance, prenez garde à n y enregistrer que des fichiers que vous considérez comme sûrs. 1. D ailleurs, un petit virus "démonstratif" pour StarOffice/OpenOffice.org a été créé il y a quelques années : voir par exemple http://www.linux.com/feature/54824.
TRAVAILLER AVEC DES MACROS 77 5.2 Macros de tierces parties Les macros que vous pouvez recevoir de tierces parties proviennent généralement de trois sources : les documents d amis ou de collègues, les extensions et les documents et macros de sources inconnues. Les documents d amis ou de collègues contiennent souvent des macros directement associées au document : il peut s agir de macro de pré-remplissage d une feuille Calc ou de contrôles d un jeu. Ces macros n ont généralement pas d intérêt endehors du document avec lesquelles elles sont fournies. Les extensions ont été introduites avec OpenOffice.org 2.0 et peuvent entre autres contenir des bibliothèques de macros. Les extensions s installent comme décrit à la section 4.3.1 et les macros correspondantes sont installées dans le conteneur Mes Macros. Elles peuvent alors être utilisées à partir de tous vos documents. Il arrive aussi de trouver des macros distribuées directement dans des documents. Certains documents sont des utilitaires à part entière ; c est par exemple le cas des Danny s Draw PowerTools (http://sourceforge.net/project/showfiles.php?group_id=87718&package_id=91518), qui permettent de créer des documents Draw avec des motifs prédéterminés (règles, étoiles ). Lorsque vous cliquez sur un bouton du document, une fenêtre s ouvre pour vous demander les paramètres de la figure que vous souhaitez réaliser et un nouveau document Draw est créé lorsque vous validez les paramètres en question. D autres documents constituent un système d installation des macros ; c est par exemple le cas des Andrew Brown s macros (http://www.darwinwars.com/lunatic/bugs/oo_macros.html), qui sont des macros utilisables dans Writer pour interchanger deux caractères, mettre en forme du texte, etc.). Un lien permet en effet d ajouter les macros au conteneur Mes macros de l utilisateur. Pour finir, vous pouvez aussi trouver des macros associées à des documents, utilisables en dehors de ce contexte, mais dont l installation n est pas prévue a priori. Pour pouvoir les utiliser dans tous vos documents, vous pouvez faire glisser de leur bibliothèque d origine vers une bibliothèque de Mes macros dans la fenêtre Outils > Macros > Gérer les macros > OpenOffice.org Basic
78 OPENOFFICE.ORG EN PERSPECTIVE Vous pouvez bien sûr créer votre propre bibliothèque de "macros diverses" pour contenir ces modules récupérés ça et là. Basic P Créer une bibliothèque Pour créer une bibliothèque de modules Basic, ouvrez la fenêtre Outils > Macros > Gérer les macros > OpenOffice.org Basic. Cliquez sur Gérer, puis, dans la fenêtre qui s ouvre, sur l onglet Bibliothèques. Vous pouvez alors créer et supprimer des bibliothèques à votre guise. 5.3 Créer ses propres macros 5.3.1 Enregistrer une macro Enregistrer une macro est le moyen le plus rapide de créer une macro simple. Pour présenter un exemple, supposons que vous soyez en train de rédiger un article sur XML. Vous avez un fichier que vous désirez présenter, mais celui-ci manque un peu de documentation. Vous saisissez donc des commentaires, mais vous aimeriez automatiser l insertion des <!-- et --> qui en marquent le début et la fin. Placez votre curseur à un endroit arbitraire d une telle ligne et lancez l enregistreur de macros avec Outils > Macro > Enregistrer une macro. Appuyez sur la touche Home (Orig) pour aller directement en début de ligne et saisissez <!--. Appuyez sur la touche Fin et saisissez -->. Cliquez sur Terminer l enregistrement. Enregistrez la macro dans Mes Macros si vous désirez qu elle soit accessible depuis tous vos documents ou dans les macros du document si elle lui est spécifique. Une fois la macro enregistrée, testez-la afin de vérifier que tout fonctionne. Placezvous à un autre endroit, où vous voulez effectuer l opération, et exécutez la macro (voir section 5.4). Si la macro ne vous convient pas, vous pouvez l éditer : il s agit d une macro Basic dont le code est disponible comme pour les macros créées sans l aide de l enregistreur.
TRAVAILLER AVEC DES MACROS 79 Basic P Enregistrer une macro Le menu Outils > Macro > Enregistrer une macro est un outil permettant d enregistrer une série d actions dans Writer ou dans Calc afin de pouvoir la reproduire facilement. Lorsque vous cliquez sur ce menu, l enregistreur de macros se lance et commence à enregistrer vos actions. Lorsque vous avez terminé, cliquez sur Terminer l enregistrement. Une fenêtre de gestion similaire à celle de la Figure 5.3 s ouvre. Vous pouvez y enregistrer votre macro dans un module existant ou créer un nouveau module, voire une nouvelle bibliothèque. Figure 5.3 Sauvegarde d une macro enregistrée. Notez par ailleurs que l enregistreur de macros enregistre ce que vous faites et non la différence entre le résultat et la situation de départ. Ainsi, si vous faites une faute de frappe lorsque vous enregistrez la macro, comme par exemple taper <?<retour arrière>!--, la macro contiendra effectivement toute cette séquence. Il peut donc être intéressant d éditer la macro dans tous les cas pour vérifier que de telles actions "parasites" n y sont pas enregistrées.
80 OPENOFFICE.ORG EN PERSPECTIVE De manière générale, les macros enregistrées peuvent servir de base à des développements simples ; en revanche elles ne sont pas miraculeuses et la supervision de l utilisateur n est souvent pas superflue. Par ailleurs, le code de ces macros ne fait appel qu au DispatchHelper, ce qui revient à envoyer des événements UNO à OpenOffice.org. Cette méthode est souvent moins pratique que la manipulation directe des objets UNO et elle est dans tous les cas nettement moins lisible. Pour plus d informations sur le DispatchHelper, reportez-vous à l encadré Objet DispatchHelper et commandes UNO à la section 25.3.5. 5.3.2 Programmer une macro en Basic Les macros programmées en Basic sont les plus courantes sous OpenOffice.org, ne serait-ce que parce que c est le langage qui y est le mieux intégré. Comme il est décrit en section 22.1.2, les macros Basic sont organisées en modules, eux-mêmes organisés en bibliothèques. Du point de vue de la programmation, les modules sont les fichiers éditables et les macros sont les sous-routines ou fonctions de ces modules. Pour créer une macro, utilisez le menu Outils > Macros > Gérer les macros > Open- Office.org Basic Un bouton Nouveau permet de créer une nouvelle macro dans un module existant. Basic P Créer un module Pour créer un module Basic, ouvrez la fenêtre Outils > Macros > Gérer les macros > OpenOffice.org Basic Cliquez sur Gérer, puis, dans la fenêtre qui s ouvre, sur l onglet Modules. Vous pouvez alors créer et supprimer des modules à votre guise. Lorsque vous cliquez sur Nouveau, l éditeur Basic s ouvre directement et génère le code de création d une nouvelle macro : Sub Macron... End Sub, où n est un élément dans une séquence d entiers. N hésitez pas à renommer la macro plus explicitement ; lorsque vous enregistrez le module, le nom de la macro est mis à jour automatiquement.