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 VBA project information
  • The VBAModuleCollection class returns the collection of VBA project modules
  • The VbaModule class provides access to the VBA project module
  • The VbaModuleType enumeration defines the types of a model in a VBA project. The module can be a procedural module, document module, class module, or designer 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:

Write or 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 shows 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 shows how to clone the VBA Module using the Clone property which creates a copy of the existing project:

Work with the VBA Project References

Aspose.Words API provides the VbaReferenceCollection class to work with VBA Project References representing a collection of VBA project references.

The following code example shows how to remove some references from the collection of references from a VBA project:


FAQ

  1. Q: How can I create a new VBA project in a Word document using Aspose.Words for .NET?
    A: Use the Document.VbaProject property to obtain a VbaProject instance, then add a new VbaModule to its Modules collection. Set the module’s Name and Type (e.g., VbaModuleType.Procedural) before saving the document.

  2. Q: How do I read the source code of an existing VBA macro?
    A: Retrieve the desired VbaModule from Document.VbaProject.Modules and access its SourceCode property. The property returns the macro’s source as a string, which you can inspect or display.

  3. Q: How can I modify or replace the source code of a VBA module?
    A: After obtaining the VbaModule, assign a new string to its SourceCode property. Save the document afterwards to persist the changes in the VBA project.

  4. Q: Is it possible to clone an entire VBA project or a single VBA module?
    A: Yes. Both VbaProject and VbaModule implement a Clone() method that returns a deep copy. You can clone the project and assign it to another document, or clone individual modules and add them to the same or a different project.

  5. Q: Do I need a separate Aspose.Words license to work with VBA macros?
    A: No separate license is required. VBA macro manipulation is covered by the standard Aspose.Words for .NET license. Ensure your license file is correctly loaded in your application to avoid evaluation limitations.