Trabalhar com VBA Macros

Visual Basic for Applications (VBA) for Microsoft Word é uma linguagem de programação simples, mas poderosa, que pode ser usada para estender a funcionalidade. Aspose.Words API fornece três classes para obter acesso ao código-fonte do projeto VBA:

  • A classe VBAProject fornece acesso às informações do projeto VBA
  • A classe VBAModulesCollection retorna a coleção de VBA módulos do projeto
  • A classe VbaModule fornece acesso ao módulo do projeto VBA

Criar um projecto VBA

Aspose.Words API fornece a propriedade VbaProject para obter ou definir VbaProject no documento.

O exemplo de código a seguir demonstra como criar um projeto VBA e um módulo VBA juntamente com propriedades básicas, por exemplo, Nome e tipo:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document();
// Create a new VBA project.
VbaProject project = new VbaProject();
project.setName("AsposeProject");
doc.setVbaProject(project);
// Create a new module and specify a macro source code.
VbaModule module = new VbaModule();
module.setName("AsposeModule");
module.setType(VbaModuleType.PROCEDURAL_MODULE);
module.setSourceCode("New source code");
// Add module to the VBA project.
doc.getVbaProject().getModules().add(module);
doc.save(dataDir + "VbaProject_out.docm");

Ler Macros

Aspose.Words também fornece aos usuários a capacidade de ler VBA macros.

O exemplo de código a seguir mostra como ler VBA Macros do documento:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(dataDir + "VbaProject_out.docm");
for (VbaModule module : doc.getVbaProject().getModules()) {
System.out.println(module.getSourceCode());
}
doc.save(dataDir + "VbaProject_out.docm");

Modificar Macros

Usando Aspose.Words, os usuários podem modificar VBA macros.

O exemplo de código a seguir mostra como modificar as Macros VBA usando a propriedade SourceCode:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(dataDir + "VbaProject_out.docm");
VbaProject project = doc.getVbaProject();
String newSourceCode = "Test change source code";
// Choose a module, and set a new source code.
project.getModules().get(0).setSourceCode(newSourceCode);

Clone VBA Projecto

Com Aspose.Words também é possível clonar VBA projetos.

O exemplo de código a seguir demonstra como clonar o projeto VBA usando a propriedade Clone que cria uma cópia do projeto existente:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(dataDir + "VbaProject_out.docm");
VbaProject project = doc.getVbaProject();
Document destDoc = new Document();
// Clone the whole project.
destDoc.setVbaProject(doc.getVbaProject().deepClone());
destDoc.save(dataDir + "output.docm");

Módulo Clone VBA

Você também pode clonar VBA módulos, se necessário.

O exemplo de código a seguir demonstra como clonar o módulo VBA usando a propriedade Clone que cria uma cópia do projeto existente.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(dataDir + "VbaProject_out.docm");
VbaProject project = doc.getVbaProject();
Document destDoc = new Document();
destDoc.setVbaProject(new VbaProject());
// Clone a single module.
VbaModule copyModule = doc.getVbaProject().getModules().get("Module1").deepClone();
destDoc.getVbaProject().getModules().add(copyModule);
destDoc.save(dataDir + "output.docm");