Trabalhar com macros VBA em documentos do Word usando Python

Visual Basic for Applications (VBA) é uma linguagem de programação poderosa que permite automatizar tarefas em documentos do Word. Além disso, você pode executar tarefas repetitivas com macros VBA com bastante facilidade. Neste artigo, você aprenderá a trabalhar com projetos e módulos VBA em documentos do MS Word. Particularmente, o artigo abordará como criar, modificar e clonar macros VBA programaticamente em Python.

Biblioteca Python para trabalhar com macros VBA do MS Word

Para trabalhar com macros VBA em arquivos do Word, usaremos Aspose.Words for Python. É uma biblioteca poderosa para criar e manipular documentos do Word a partir de aplicativos Python. Você pode instalar a biblioteca em seu aplicativo de PyPI usando o seguinte comando pip.

pip install aspose-words

Criar macro VBA em um documento do MS Word em Python

A seguir estão as etapas para criar uma macro VBA em um arquivo MS Word DOCM usando Python.

  • Carregue o documento do Word ou crie um novo usando a classe Document.
  • Crie um objeto da classe VbaProject.
  • Defina o nome do projeto usando a propriedade VbaProject.name.
  • Atribua o projeto à propriedade Document.vbaproject.
  • Crie um objeto da classe VbaModule.
  • Defina o nome e o tipo de módulo usando as propriedades VbaModule.name e VbaModule.type, respectivamente.
  • Defina o código-fonte usando a propriedade VbaModule.sourcecode.
  • Adicione o módulo ao projeto VBA do documento usando o método Document.vbaproject.modules.add(VbaModule).
  • Salve o documento usando o método Document.save().

O exemplo de código a seguir mostra como criar uma macro VBA em um 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 em um documento do Word em Python

Você também pode acessar e modificar as macros VBA existentes em documentos do Word sem problemas. As etapas a seguir demonstram como fazer isso usando Aspose.Words for Python.

  • Carregue o documento do Word usando a classe Document.
  • Obtenha a referência do VbaProject em um objeto usando a propriedade Document.vbaproject.
  • Acesse o módulo VBA desejado usando index e atualize seu código fonte usando a propriedade VbaProject.modules[int].sourcecode.
  • Salve o documento usando o método Document.save().

O exemplo de código a seguir mostra como modificar uma macro VBA do MS Word existente usando 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 em um documento do Word usando Python

Em certos casos, pode ser necessário clonar um módulo VBA ou todo o projeto VBA de um documento do Word para outro. Para conseguir isso, o Aspose.Words for Python permite que você crie clones com bastante facilidade. As seções a seguir abordam como clonar um módulo VBA ou um projeto VBA.

Clonar um módulo VBA

A seguir estão as etapas para criar um clone de um módulo VBA de um documento DOCM para outro usando Python.

  • Carregue o documento do Word de origem usando a classe Document.
  • Carregue o documento do Word de destino usando a classe Document.
  • Crie um VbaProject para o documento do Word de destino.
  • Obtenha o clone do módulo VBA do documento do Word de origem em um objeto usando o método Document.vbaproject.modules.getbyname(string).clone().
  • Adicione o módulo clonado ao documento de destino usando o método Document.vbaproject.modules.add(VbaModule).
  • Salve o documento de destino usando o método Document.save().

O exemplo de código a seguir mostra como clonar um módulo VBA do MS Word em 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 um projeto VBA

A seguir estão as etapas para clonar um projeto VBA do MS Word em Python.

  • Carregue o documento do Word de origem usando a classe Document.
  • Carregue o documento do Word de destino usando a classe Document.
  • Obtenha o clone do projeto VBA do documento de origem usando o método Document.vbaproject.clone() e adicione-o ao documento de destino usando a propriedade Document.vbaproject.
  • Salve o documento de destino usando o método Document.save().

O exemplo de código a seguir mostra como clonar um projeto VBA de um documento do Word para outro em 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")

Obtenha uma licença de API gratuita

Você pode obter uma licença temporária para usar o Aspose.Words for Python sem limitações de avaliação.

Conclusão

Neste artigo, você aprendeu como criar macros VBA em documentos do MS Word usando Python. Além disso, você viu como modificar ou clonar módulos ou projetos VBA existentes programaticamente. Além disso, você pode explorar outros recursos do Aspose.Words for Python usando a documentação. Caso você tenha alguma dúvida, sinta-se à vontade para nos informar através do nosso fórum.

Veja também

Informações: Se você precisar obter um documento do Word de uma apresentação do PowerPoint, poderá usar o conversor Aspose Apresentação para documento do Word.