BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Comment Node a remplacé les Macros dans Microsoft Word

Comment Node a remplacé les Macros dans Microsoft Word

Favoris

Depuis près de 30 ans, les macros sont un des arguments majeurs de Microsoft Word. Introduit dès 1989, WordBASIC permettait à des rédacteurs peu formés d'écrire des programmes simplifiant leurs tâches quotidiennes.

Durant cet ère, la compétition était rude. A côté de Word, il y avait WordStar et le favori d'alors WordPerfect, chacun avec leur propre langage de macro. La bataille faisait rage, avec les demandes utilisateurs, l'ajout de fonctionnalités allait bon train.

Quelque chose d'intéressant arriva fin 90. Quand Microsoft créa Visual Basic for Application (VBA), un langage à portée objet (limitée) et IDE correspondante, pour remplacer WordBASIC, il ne créa pas simplement un nouveau composant embarqué. Avec une ambition initiale de fonctionner sur tous les produits MS Office, ils comprirent qu'ils pouvaient positionner une licence sur la technologie. Bientôt, de nombreuses entreprises proposèrent du support VBA comme ArcGIS, AutoCAD, SolidWorks, CorelDraw, et même WordPerfect.

La perception public sur les macros décrut significativement début 2000. Les "macro virus" provoquaient des désastres. Cachés dans les documents Word, ils étaient difficilement détectables par les antivirus.

En réponse, Microsoft vérouilla l'interface de programmation de VBA. Elle restait toujours aussi puissante, mais désactiver les sécurités pour utiliser les macros était un vrai défi. Et la plupart des antivirus refusaient tous les documents contenant des macros et partagés par mail.

Bien que sur le déclin, Visual Basic for Applications est toujours avec nous. La dernière version, 7.1, a été lancée en 2013 et supporte le 64 bit depuis 2010. Mais avec la popularité grandissante des éditeurs de texte en ligne, la technologie VBA entre dans une impasse. Construit dans les années 90 durant l'ère des technologies COM, il n'y a pas de manière réaliste pour l'héberger dans une application web. Et avec le remplacement de BASIC par JavaScript comme langage du commun, l'idée de créer un nouveau "VBA pour le web" ne paraissait pas tenable.

.NET et Office

Dans une tentative pour déplacer les dév du VBA devenu obsolète, Microsoft a aussi créé Visual Studio Tools for Office (VSTO). Cet ensemble d'outils et de bibliothèques pour les développeurs ne permettait pas seulement de créer des plugins pour Office, mais aussi de déployer des applications autonomes pour gérer des documents Office.

C'était au moins la théorie. En pratique, VSTO échoua sur tous les fronts.

Les développeurs occasionnels ne veulent pas installer Visual Studio et créer des plugins Office à partir de rien. Ils veulent enregistrer des macros, les modifier pour correspondre à leurs besoins. Le niveau de compétences pour passer de "j'édite jusqu'au fonctionnement" et partir d'une page planche est énorme.

Et en plus, il y a un problème de versions. Les macros VBA sont stockés en texte pur. Cela signifie que le code peut marcher avec presque toutes les versions d'Office dès lors que vous n'utilisez pas de fonctionnalités qui n'existent que dans des versions plus récentes. Avec les plugins VSTO, vous devez cibler une version d'Office spécifique. Cela signifie que le développeur doit utiliser la version la plus ancienne dans l'entreprise.

A ce propos, les développeurs professionnels étaient vraiment peu intéressés par les plugins. Ils veulent construire des serveurs qui consomment et/ou génèrent des documents Office. Mais VSTO est construit sur des composants COM, impliquant qu'il commence par littéralement copier Word ou Excel pour réellement opérer les tâches. Faire tourner une copie indépendante d'un client lourd pour chaque utilisateur d'un site web n'est juste pas tenable.

Et comme VBA, vous ne pouvez vraiment pas utiliser VSTO dans un navigateur.

Construire des Adds-Ins Office avec Node

Comme expliqué ci-dessus, JavaScript est maintenant le langage de programmation du commun. Et Node devient la plateforme de développement pour les amateurs (et aussi les professionnels) qui ne veulent pas, ou n'ont pas besoin de gros IDE comme Eclipse ou Visual Studio. Ce n'est donc pas une surprise que Microsoft prenne ces outils pour construire des Add-ins Office.

Pour commencer, il vous faut installer Node. Ensuite, en ligne de commande admin, lancez les deux commandes :

npm install -g tsd bower gulp yo generator-office

yo office

Le générateur yeoman vous demandera le type d'add-in voulu (ruban, panneau de tâche, etc.), le type d'Office à prendre en compte, et si vous voulez le construire en Angular ou en pur HTML/JavaScript. La commande suivante lance un serveur local pour héberger votre add-in.

gulp serve-static

Ceci permet les "smoke tests" basiques, mais pour tout élément en production, il vous faudra un Office sur le web. Après l'ouverture d'un document vierge, vous pouvez télécharger le manifeste de votre add-in et le voir à l'oeuvre.

Vous pourriez vous demander pourquoi lancer un serveur local si vous téléchargez un manifeste. En fait, le manifeste permet juste au navigateur de charger l'add-in depuis votre ordinateur tout en faisant tourner Office en même temps. Concrètement, cela signifie que vous pouvez modifier l'add-in, rafraîchir le navigateur, et voir les effets immédiatement. Il n'est pas nécessaire de re-télécharger l'add-in à chaque changement.

Comme c'est une application web, vous pouvez le débugger avec les outils natifs du navigateur.

Pour voir cela en action, regardez Build Office Add-ins with Any Code Editor and Office Online par Harrison Shapley.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

BT