Travailler avec des macros VBA dans des documents Word à l'aide de Python

Visual Basic pour Applications (VBA) est un langage de programmation puissant qui vous permet d’automatiser des tâches dans des documents Word. De plus, vous pouvez effectuer des tâches répétitives avec des macros VBA assez facilement. Dans cet article, vous apprendrez à travailler avec des projets et des modules VBA dans des documents MS Word. En particulier, l’article expliquera comment créer, modifier et cloner des macros VBA par programme en Python.

Bibliothèque Python pour travailler avec les macros MS Word VBA

Pour travailler avec les macros VBA dans les fichiers Word, nous utiliserons Aspose.Words for Python. C’est une bibliothèque puissante pour créer et manipuler des documents Word à partir d’applications Python. Vous pouvez installer la bibliothèque dans votre application à partir de PyPI à l’aide de la commande pip suivante.

pip install aspose-words

Créer une macro VBA dans un document MS Word en Python

Voici les étapes pour créer une macro VBA dans un fichier MS Word DOCM à l’aide de Python.

  • Chargez le document Word ou créez-en un nouveau à l’aide de la classe Document.
  • Créez un objet de la classe VbaProject.
  • Définissez le nom du projet à l’aide de la propriété VbaProject.name.
  • Attribuez le projet à la propriété Document.vbaproject.
  • Créez un objet de la classe VbaModule.
  • Définissez le nom et le type de module à l’aide des propriétés VbaModule.name et VbaModule.type, respectivement.
  • Définissez le code source à l’aide de la propriété VbaModule.sourcecode.
  • Ajoutez un module au projet VBA du document à l’aide de la méthode Document.vbaproject.modules.add(VbaModule).
  • Enregistrez le document à l’aide de la méthode Document.save().

L’exemple de code suivant montre comment créer une macro VBA dans un document DOCM à l’aide de Python.

import aspose.words as aw

# Load Word document.
doc = aw.Document("document.docm")

# Create VBA project
project = aw.vba.VbaProject()
project.name = "AsposeProject"
doc.vba_project = project

# Create a new module and specify a macro source code.
module = aw.vba.VbaModule()
module.name = "AsposeModule"
module.type = aw.vba.VbaModuleType.PROCEDURAL_MODULE
module.source_code = "New source code"

# Add module to the VBA project.
doc.vba_project.modules.add(module)

# Save document.
doc.save("create_vba_project.docm")

Modifier la macro VBA dans un document Word en Python

Vous pouvez également accéder et modifier les macros VBA existantes dans les documents Word de manière transparente. Les étapes suivantes montrent comment y parvenir en utilisant Aspose.Words for Python.

  • Chargez le document Word à l’aide de la classe Document.
  • Obtenez la référence du VbaProject dans un objet à l’aide de la propriété Document.vbaproject.
  • Accédez au module VBA souhaité à l’aide de l’index et mettez à jour son code source à l’aide de la propriété VbaProject.modules[int].sourcecode.
  • Enregistrez le document à l’aide de la méthode Document.save().

L’exemple de code suivant montre comment modifier une macro MS Word VBA existante à l’aide de Python.

import aspose.words as aw

# Load Word document.
doc = aw.Document("document.docm")

# Get reference of VBA project.
project = doc.vba_project

# Update source code.
newSourceCode = "Test change source code"
project.modules[0].source_code = newSourceCode
    
# Save document.
doc.save("modify_vba_macros.docm")

Cloner une macro VBA dans un document Word à l’aide de Python

Dans certains cas, vous devrez peut-être cloner un module VBA ou l’ensemble du projet VBA d’un document Word à un autre. Pour y parvenir, Aspose.Words for Python vous permet de créer des clones assez facilement. Les sections suivantes expliquent comment cloner un module VBA ou un projet VBA.

Cloner un module VBA

Voici les étapes pour créer un clone d’un module VBA d’un document DOCM à un autre en utilisant Python.

  • Chargez le document Word source à l’aide de la classe Document.
  • Chargez le document Word de destination à l’aide de la classe Document.
  • Créez un VbaProject pour le document Word de destination.
  • Obtenez le clone du module VBA du document Word source dans un objet à l’aide de la méthode Document.vbaproject.modules.getbyname(string).clone().
  • Ajoutez le module cloné dans le document de destination à l’aide de la méthode Document.vbaproject.modules.add(VbaModule).
  • Enregistrez le document de destination à l’aide de la méthode Document.save().

L’exemple de code suivant montre comment cloner un module MS Word VBA en Python.

import aspose.words as aw

# Load source Word document.
doc = aw.Document("document.docm")

# Load destination Word document.
destDoc = aw.Document("dest_document.docm")
destDoc.vba_project = aw.vba.VbaProject() 

# Clone VBA module.
copyModule = doc.vba_project.modules.get_by_name("Module1").clone()
destDoc.vba_project.modules.add(copyModule)

# Save document.
destDoc.save("clone_vba_module.docm")

Cloner un projet VBA

Voici les étapes pour cloner un projet MS Word VBA en Python.

  • Chargez le document Word source à l’aide de la classe Document.
  • Chargez le document Word de destination à l’aide de la classe Document.
  • Obtenez le clone du projet VBA à partir du document source à l’aide de la méthode Document.vbaproject.clone() et ajoutez-le au document de destination à l’aide de la propriété Document.vbaproject.
  • Enregistrez le document de destination à l’aide de la méthode Document.save().

L’exemple de code suivant montre comment cloner un projet VBA d’un document Word à un autre en Python.

import aspose.words as aw

# Load source Word document.
doc = aw.Document("document.docm")

# Load destination Word document.
destDoc = aw.Document("dest_document.docm")

# Clone VBA project.
destDoc.vba_project = doc.vba_project.clone() 

# Save document.
destDoc.save("clone_vba_module.docm")

Obtenez une licence API gratuite

Vous pouvez obtenir une licence temporaire pour utiliser Aspose.Words for Python sans limitation d’évaluation.

Conclusion

Dans cet article, vous avez appris à créer des macros VBA dans des documents MS Word à l’aide de Python. De plus, vous avez vu comment modifier ou cloner par programme des modules ou des projets VBA existants. De plus, vous pouvez explorer d’autres fonctionnalités d’Aspose.Words for Python en utilisant la documentation. Si vous avez des questions, n’hésitez pas à nous en faire part via notre forum.

Voir également

Info : Si jamais vous avez besoin d’obtenir un document Word à partir d’une présentation PowerPoint, vous pouvez utiliser le convertisseur Aspose Presentation to Word Document.