Projets VBA

Projets VBA

Ce guide montre comment inspecter et modifier le projet VBA intégré dans un document macro-activé avec Aspose.Words FOSS pour .NET. Aspose.Words FOSS pour .NET peut inspecter et modifier le projet VBA intégré dans un document macro-activé (.docm) — ses modules, son code source et ses références de bibliothèque — via Document.VbaProject et le modèle d’objet VbaProject/VbaModule. Il s’agit d’inspection et de modification de projet, pas d’exécution de macro: Aspose.Words n’a jamais inclus d’environnement d’exécution VBA, ni dans le produit commercial ni dans cette édition FOSS, de sorte que le code VBA est lu et modifié comme des données, et non exécuté.


Accéder au projet VBA d’un document

Document.VbaProject renvoie un VbaProject, ou null si le document n’a pas de projet VBA. Document.HasMacros indique si un projet VBA est présent sans que vous ayez à accéder à VbaProject d’abord. VbaProject.Name, CodePage, IsSigned et IsProtected décrivent le projet lui–même.


Lire et modifier les modules

VbaProject.Modules renvoie un VbaModuleCollection. Indexez-le par nom pour rechercher un module spécifique (p.ex. modules["ModuleName"]), ou parcourez toute la collection. Chaque VbaModule expose son Name, son Type (un VbaModuleType: DocumentModule, ProceduralModule, ClassModule ou DesignerModule), et — de façon cruciale — son SourceCode en tant que propriété chaîne modifiable, de sorte que le code source du module puisse être lu et réécrit programmatiquement. VbaModuleCollection.Add(vbaModule) et Remove(module) ajoutent ou suppriment des modules du projet.


Références de bibliothèque

VbaProject.References renvoie un VbaReferenceCollection de VbaReference objets — les bibliothèques de types Automation et autres projets VBA dont le code macro dépend. VbaReference.Type signale un VbaReferenceType (Registered, Project, Original ou Control), et LibId identifie la bibliothèque référencée. VbaReferenceCollection.Remove(item) / RemoveAt(index) suppriment les références.


Suppression d’un projet VBA

Document.RemoveMacros() supprime complètement le projet VBA d’un document — utile pour créer une copie sans macro d’un document qui était initialement fourni avec des macros.


Conseils et meilleures pratiques

  • Vérifiez Document.HasMacros avant de toucher à Document.VbaProject afin d’éviter la gestion des valeurs nulles pour les documents qui n’ont jamais eu de macros.
  • Considérez VbaModule.SourceCode comme du texte brut — comme il n’y a pas d’environnement d’exécution VBA, le modifier ne valide pas le code ; le VBA mal formé sera toujours transmis, mais ne s’exécutera pas correctement dans Word tant qu’il ne sera pas corrigé.
  • Utilisez VbaProject.IsSigned/IsProtected pour détecter les projets signés ou protégés avant de tenter de modifier leurs modules.
  • Document.RemoveMacros() est la façon la plus simple de supprimer les macros pour une copie de distribution « clean », plutôt que de nettoyer manuellement chaque module.

Problèmes courants

ProblèmeCauseCorrection
Document.VbaProject est nullLe document n’a pas de projet VBAVérifiez d’abord Document.HasMacros avant d’accéder aux membres de VbaProject
On s’attend à ce que les macros s’exécutent après la modification de SourceCodeAspose.Words n’a pas de moteur d’exécution VBAUtilisez ce API pour lire/modifier uniquement le code source et la structure des macros ; exécutez le document résultant dans un environnement disposant d’un runtime VBA, tel que Microsoft Word, pour exécuter le code
L’indexation de VbaModuleCollection par son nom ne renvoie rienNom du module ne correspond pas (casse ou orthographe exacte)Énumérez VbaProject.Modules pour confirmer le nom exact du module

FAQ

Le Aspose.Words FOSS pour .NET peut-il exécuter des macros VBA dans un document?

Non. Ni cette édition ni le produit commercial Aspose.Words n’incluent un moteur d’exécution VBA — les projets VBA sont lus et modifiés en tant que données (source du module, références, métadonnées du projet), jamais exécutés.

Comment lire le code source d’une macro?

Obtenez le module en indexant VbaProject.Modules par son nom (par ex. modules["ModuleName"]), puis lisez sa propriété SourceCode.

Puis-je ajouter un tout nouveau module VBA à un document?

Oui — créez un VbaModule et ajoutez-le aux VbaModuleCollection du projet via Add(vbaModule).

Comment vérifier si un document possède même des macros avant de le traiter ?

Lisez Document.HasMacros ; c’est true si le document contient un projet VBA, sans que vous ayez à accéder à Document.VbaProject d’abord.

Comment supprimer toutes les macros d’un document ?

Appelez Document.RemoveMacros().


API Reference Résumé

Classe / MéthodeDescription
Document.VbaProjectLe VbaProject du document, ou null s’il ne contient aucune macro
Document.HasMacrosPrésence d’un projet VBA
VbaProjectName, Modules, References, CodePage, IsSigned, IsProtected
VbaModuleUn module : Name, Type (VbaModuleType), modifiable SourceCode
VbaModuleCollectionAdd(), indexeur par nom, Remove(), Count
VbaReference / VbaReferenceCollectionBibliothèques de types référencées : Type (VbaReferenceType), LibId
Document.RemoveMacros()Supprime le projet VBA du document

Voir aussi

 Français