Working with VBA Macros

Visual Basic for Applications (VBA) for Microsoft Word is a simple but powerful programming language that can be used to extend the functionality. Aspose.Words API provides three classes to get access to the VBA project source code:

  • The VBAProject class provides access to the VBA project information
  • The VBAModulesCollection class returns the collection of VBA project modules
  • The VbaModule class provides access to the VBA project module

Create a VBA Project

Aspose.Words API provides the VbaProject property to get or set VbaProject in the document.

The following code example demonstrates how to create a VBA project and VBA Module along with basic properties e.g. Name and Type:

Read Macros

Aspose.Words also provides users with the ability to read VBA macros.

The following code example shows how to read VBA Macros from the document:

Modify Macros

Using Aspose.Words, users can modify VBA macros.

The following code example shows how to modify VBA Macros using the SourceCode property:

Clone VBA Project

With Aspose.Words it is also possible to clone VBA projects.

The following code example demonstrates how to clone the VBA Project using the Clone property which creates a copy of the existing project:

Clone VBA Module

You can also clone VBA modules if needed.

The following code example demonstrates how to clone the VBA Module using the Clone property which creates a copy of the existing project. 


FAQ

  1. Q: How do I apply an Aspose.Words license when working with VBA macros in Java?
    A: Load the license file using License license = new License(); license.setLicense("Aspose.Words.Java.lic"); before creating or loading any document. The license must be set once per application domain; otherwise, the library runs in evaluation mode and may add watermarks.

  2. Q: Can Aspose.Words execute VBA macros embedded in a Word document?
    A: No. Aspose.Words can read, modify, and clone VBA projects, but it does not execute VBA code. Execution of macros must be performed in Microsoft Word or another environment that supports VBA.

  3. Q: How can I read the source code of a specific VBA module?
    A: Retrieve the module from the VBAModulesCollection and use the getSourceCode() method:

    VbaModule module = document.getVbaProject().getModules().getByName("Module1");
    String source = module.getSourceCode();
    
  4. Q: What is the recommended way to modify the source code of a VBA macro?
    A: Use the setSourceCode(String) method on the VbaModule instance after obtaining the module. Save the document afterwards to persist the changes.

  5. Q: How do I clone an entire VBA project or a single module?
    A: Both VbaProject and VbaModule implement a deep clone method. Call VbaProject clonedProject = originalProject.deepClone(); or VbaModule clonedModule = originalModule.deepClone(); and assign the cloned object to the target document.