Utilizzo di macro VBA

Visual Basic per applicazioni (VBA) per Microsoft Word è un linguaggio di programmazione semplice ma potente che può essere utilizzato per estendere la funzionalità. Aspose.Words API fornisce tre classi per accedere al codice sorgente del progetto VBA:

  • La classe VBAProject fornisce l’accesso alle informazioni del progetto VBA
  • La classe VBAModulesCollection restituisce la raccolta di moduli di progetto VBA
  • La classe VbaModule fornisce l’accesso al modulo del progetto VBA

Creare un progetto VBA

Aspose.Words API fornisce la proprietà VbaProject per ottenere o impostare VbaProject nel documento.

Nell’esempio di codice seguente viene illustrato come creare un progetto VBA e un modulo VBA insieme alle proprietà di base, ad esempio 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");

Leggere le macro

Aspose.Words fornisce inoltre agli utenti la possibilità di leggere le macro VBA.

L’esempio di codice seguente mostra come leggere le macro VBA dal 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");

Modifica macro

Usando Aspose.Words, gli utenti possono modificare le macro VBA.

L’esempio di codice seguente mostra come modificare le macro VBA utilizzando la proprietà 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 Progetto

Con Aspose.Words è anche possibile clonare progetti VBA.

Nell’esempio di codice seguente viene illustrato come clonare il progetto VBA utilizzando la proprietà Clone che crea una copia del progetto esistente:

// 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");

Clona VBA Modulo

È anche possibile clonare i moduli VBA se necessario.

Nell’esempio di codice seguente viene illustrato come clonare il modulo VBA utilizzando la proprietà Clone che crea una copia del progetto esistente.

// 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");