Работа с макросами VBA

Visual Basic для приложений (VBA) для Microsoft Word - это простой, но мощный язык программирования, который можно использовать для расширения функциональности. Aspose.Words API предоставляет три класса для получения доступа к исходному коду проекта VBA:

  • Класс VBAProject предоставляет доступ к информации о проекте VBA
  • Класс VBAModulesCollection возвращает коллекцию модулей проекта VBA
  • Класс VbaModule предоставляет доступ к модулю проекта VBA

Создайте проект VBA

Aspose.Words API предоставляет свойство VbaProject для получения или установки VbaProject в документе.

В следующем примере кода показано, как создать проект VBA и модуль VBA вместе с основными свойствами, например, именем и типом:

// 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.

В следующем примере кода показано, как изменить макросы VBA, используя свойство 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);

Клонировать проект VBA

С помощью Aspose.Words также можно клонировать проекты VBA.

В следующем примере кода показано, как клонировать проект VBA, используя свойство Clone, которое создает копию существующего проекта:

// 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.

В следующем примере кода показано, как клонировать модуль VBA, используя свойство Clone, которое создает копию существующего проекта.

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