使用VBA宏

Visual BasicFor Applications(VBA)forMicrosoft Word是一种简单但功能强大的编程语言,可用于扩展功能。 Aspose.WordsAPI提供了三个类来访问VBA项目源代码:

创建VBA项目

Aspose.WordsAPI提供VbaProject属性以获取或设置文档中的VbaProject。

下面的代码示例演示如何创建VBA项目和VBA模块以及基本属性,例如Name和Type:

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

读取宏

Aspose.Words还为用户提供了读取VBA宏的能力。

下面的代码示例演示如何从文档中读取VBA宏:

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

修改宏

使用Aspose.Words,用户可以修改VBA宏。

下面的代码示例演示如何使用SourceCode属性修改VBA宏:

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

克隆VBA项目

使用Aspose.Words也可以克隆VBA项目。

下面的代码示例演示如何使用创建现有项目副本的Clone属性克隆VBA项目:

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

克隆VBA模块

如果需要,您还可以克隆VBA模块。

下面的代码示例演示如何使用创建现有项目副本的Clone属性克隆VBA模块。

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