Trabaje con macros de VBA en documentos de Word usando Python

Visual Basic para Aplicaciones (VBA) es un poderoso lenguaje de programación que le permite automatizar tareas en documentos de Word. Además, puede realizar tareas repetitivas con macros de VBA con bastante facilidad. En este artículo, aprenderá a trabajar con proyectos y módulos de VBA en documentos de MS Word. En particular, el artículo cubrirá cómo crear, modificar y clonar macros de VBA mediante programación en Python.

Biblioteca de Python para trabajar con macros VBA de MS Word

Para trabajar con macros VBA en archivos de Word, usaremos Aspose.Words for Python. Es una poderosa biblioteca para crear y manipular documentos de Word desde aplicaciones de Python. Puede instalar la biblioteca en su aplicación desde PyPI usando el siguiente comando pip.

pip install aspose-words

Crear macro VBA en un documento de MS Word en Python

Los siguientes son los pasos para crear una macro VBA en un archivo DOCM de MS Word usando Python.

  • Cargue el documento de Word o cree uno nuevo usando la clase Document.
  • Cree un objeto de la clase VbaProject.
  • Establezca el nombre del proyecto usando la propiedad VbaProject.name.
  • Asigne el proyecto a la propiedad Document.vba\project.
  • Cree un objeto de la clase VbaModule.
  • Establezca el nombre y el tipo de módulo mediante las propiedades VbaModule.name y VbaModule.type, respectivamente.
  • Establezca el código fuente usando la propiedad VbaModule.source\code.
  • Agregue el módulo al proyecto VBA del documento usando el método Document.vba\project.modules.add(VbaModule).
  • Guarde el documento usando el método Document.save().

El siguiente ejemplo de código muestra cómo crear una macro VBA en un documento DOCM usando 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")

Modificar macro VBA en un documento de Word en Python

También puede acceder y modificar las macros de VBA existentes en documentos de Word sin problemas. Los siguientes pasos demuestran cómo lograr esto usando Aspose.Words for Python.

  • Cargue el documento de Word usando la clase Document.
  • Obtenga la referencia de VbaProject en un objeto usando la propiedad Document.vba\project.
  • Acceda al módulo VBA deseado usando el índice y actualice su código fuente usando la propiedad VbaProject.modules[int].source\code.
  • Guarde el documento usando el método Document.save().

El siguiente ejemplo de código muestra cómo modificar una macro VBA de MS Word existente mediante 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")

Clonar macro VBA en un documento de Word usando Python

En ciertos casos, es posible que deba clonar un módulo de VBA o todo el proyecto de VBA de un documento de Word a otro. Para lograr esto, Aspose.Words for Python le permite crear clones con bastante facilidad. Las siguientes secciones cubren cómo clonar un módulo VBA o un proyecto VBA.

Clonar un módulo VBA

Los siguientes son los pasos para crear un clon de un módulo VBA de un documento DOCM a otro usando Python.

  • Cargue el documento de Word de origen utilizando la clase Document.
  • Cargue el documento de Word de destino utilizando la clase Document.
  • Cree un VbaProject para el documento de Word de destino.
  • Obtenga un clon del módulo VBA del documento de Word de origen en un objeto usando el método Document.vba\project.modules.get_by\name(string).clone().
  • Agregue el módulo clonado al documento de destino mediante el método Document.vba\project.modules.add(VbaModule).
  • Guarde el documento de destino utilizando el método Document.save().

El siguiente ejemplo de código muestra cómo clonar un módulo VBA de MS Word 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")

Clonar un proyecto VBA

Los siguientes son los pasos para clonar un proyecto de MS Word VBA en Python.

  • Cargue el documento de Word de origen utilizando la clase Document.
  • Cargue el documento de Word de destino utilizando la clase Document.
  • Obtenga un clon del proyecto VBA del documento de origen usando el método Document.vba\project.clone() y agréguelo al documento de destino usando la propiedad Document.vba\project.
  • Guarde el documento de destino utilizando el método Document.save().

El siguiente ejemplo de código muestra cómo clonar un proyecto de VBA de un documento de Word a otro 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")

Obtenga una licencia de API gratuita

Puede obtener una licencia temporal para usar Aspose.Words for Python sin limitaciones de evaluación.

Conclusión

En este artículo, ha aprendido a crear macros de VBA en documentos de MS Word utilizando Python. Además, ha visto cómo modificar o clonar módulos o proyectos de VBA existentes mediante programación. Además, puede explorar otras características de Aspose.Words for Python utilizando la documentación. En caso de que tenga alguna pregunta, no dude en hacérnosla saber a través de nuestro foro.

Ver también

Información: si alguna vez necesita obtener un documento de Word de una presentación de PowerPoint, puede usar el convertidor Aspose Presentación a documento de Word.