Управление VBA‑проектами в презентациях на Android

Добавить VBA‑макросы

Aspose.Slides предоставляет класс VbaProject для создания VBA‑проектов (и их ссылок) и редактирования существующих модулей. Вы можете использовать интерфейс IVbaProject для управления VBA, встроенным в презентацию.

  1. Создайте экземпляр класса Presentation.
  2. Используйте конструктор VbaProject для добавления нового VBA‑проекта.
  3. Добавьте модуль в VbaProject.
  4. Установите исходный код модуля.
  5. Добавьте ссылки на .
  6. Добавьте ссылки на Microsoft Office.
  7. Свяжите ссылки с VBA‑проектом.
  8. Сохраните презентацию.

Этот код на Java показывает, как добавить VBA‑макрос с нуля в презентацию:

// Создаёт экземпляр класса презентации
Presentation pres = new Presentation();
try {
    // Создаёт новый проект VBA
    pres.setVbaProject(new VbaProject());
    
    // Добавляет пустой модуль в проект VBA
    IVbaModule module = pres.getVbaProject().getModules().addEmptyModule("Module");
    
    // Задаёт исходный код модуля
    module.setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
    
    // Создаёт ссылку на <stdole>
    VbaReferenceOleTypeLib stdoleReference = new VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
    
    // Создаёт ссылку на Office
    VbaReferenceOleTypeLib officeReference = new VbaReferenceOleTypeLib("Office",
            "*\\G{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}#2.0#0#C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE14\\MSO.DLL#Microsoft Office 14.0 Object Library");
    
    // Добавляет ссылки в проект VBA
    pres.getVbaProject().getReferences().add(stdoleReference);
    pres.getVbaProject().getReferences().add(officeReference);
   
    // Сохраняет презентацию
    pres.save("test.pptm", SaveFormat.Pptm);
} finally {
    if (pres != null) pres.dispose();
}

Удалить VBA‑макросы

Используя свойство VbaProject класса Presentation, вы можете удалить VBA‑макрос.

  1. Создайте экземпляр класса Presentation и загрузите презентацию, содержащую макрос.
  2. Получите доступ к модулю Macro и удалите его.
  3. Сохраните изменённую презентацию.

Этот код на Java показывает, как удалить VBA‑макрос:

// Загружает презентацию, содержащую макрос
Presentation pres = new Presentation("VBA.pptm");
try {
    // Получает модуль Vba и удаляет его
    pres.getVbaProject().getModules().remove(pres.getVbaProject().getModules().get_Item(0));
    
    // Сохраняет презентацию
    pres.save("test.pptm", SaveFormat.Pptm);
} finally {
    if (pres != null) pres.dispose();
}

Извлечь VBA‑макросы

  1. Создайте экземпляр класса Presentation и загрузите презентацию, содержащую макрос.
  2. Проверьте, содержит ли презентация VBA‑проект.
  3. Пройдите в цикле по всем модулям, содержащимся в VBA‑проекте, чтобы просмотреть макросы.

Этот код на Java показывает, как извлечь VBA‑макросы из презентации, содержащей макросы:

// Загружает презентацию, содержащую макрос
Presentation pres = new Presentation("VBA.pptm");
try {
    if (pres.getVbaProject() != null) // Проверяет, содержит ли презентация VBA-проект
    {
        for (IVbaModule module : pres.getVbaProject().getModules())
        {
            System.out.println(module.getName());
            System.out.println(module.getSourceCode());
        }
    }
} finally {
    if (pres != null) pres.dispose();
}

Проверить, защищён ли VBA‑проект паролем

С помощью метода IVbaProject.isPasswordProtected вы можете определить, защищены ли свойства проекта паролем.

  1. Создайте экземпляр класса Presentation и загрузите презентацию, содержащую макрос.
  2. Проверьте, содержит ли презентация VBA project.
  3. Проверьте, защищён ли VBA‑проект паролем, чтобы просмотреть его свойства.
Presentation presentation = new Presentation("VBA.pptm");
try {
    if (presentation.getVbaProject() != null) { // Проверьте, содержит ли презентация VBA‑проект.
        if (presentation.getVbaProject().isPasswordProtected()) {
            System.out.printf("The VBA Project '%s' is protected by password to view project properties.", 
                    presentation.getVbaProject().getName());
        }
    }
} finally {
    presentation.dispose();
}

FAQ

Что происходит с макросами, если я сохраняю презентацию как PPTX?

Макросы будут удалены, так как PPTX не поддерживает VBA. Чтобы сохранить макросы, выберите PPTM, PPSM или POTM.

Может ли Aspose.Slides выполнять макросы внутри презентации, например, обновлять данные?

Нет. Библиотека никогда не выполняет код VBA; выполнение возможно только внутри PowerPoint при соответствующих настройках безопасности.

Поддерживается ли работа с элементами управления ActiveX, связанными с кодом VBA?

Да, вы можете получить доступ к существующим ActiveX controls, изменять их свойства и удалять их. Это полезно, когда макросы взаимодействуют с ActiveX.