Trabajar con VBA Macros

Visual Basic para aplicaciones (VBA) para Microsoft Word es un lenguaje de programación simple pero potente que se puede utilizar para ampliar la funcionalidad. Aspose.Words API proporciona tres clases para obtener acceso al código fuente del proyecto VBA:

  • La clase VBAProject proporciona acceso a la información del proyecto VBA
  • La clase VBAModulesCollection devuelve la colección de VBA módulos de proyecto
  • La clase VbaModule proporciona acceso al módulo de proyecto VBA

Crear un proyecto VBA

Aspose.Words API proporciona la propiedad VbaProject para obtener o establecer VbaProject en el documento.

El siguiente ejemplo de código demuestra cómo crear un proyecto VBA y un módulo VBA junto con propiedades básicas, por ejemplo, Nombre y 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");

Leer Macros

Aspose.Words también proporciona a los usuarios la capacidad de leer VBA macros.

El siguiente ejemplo de código muestra cómo leer VBA Macros del 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

Con Aspose.Words, los usuarios pueden modificar VBA macros.

El siguiente ejemplo de código muestra cómo modificar VBA Macros usando la propiedad 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);

Proyecto Clon VBA

Con Aspose.Words también es posible clonar VBA proyectos.

El siguiente ejemplo de código demuestra cómo clonar el proyecto VBA utilizando la propiedad Clone que crea una copia del proyecto 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 Clonar VBA

También puede clonar VBA módulos si es necesario.

El siguiente ejemplo de código demuestra cómo clonar el módulo VBA usando la propiedad Clone que crea una copia del proyecto 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");