Презентация через VBA
Примечание
Когда вы конвертируете презентацию, содержащую макросы, в другой формат файла (PDF, HTML и т. д.), Aspose.Slides игнорирует все макросы (макросы не переносятся в результирующий файл).
Когда вы добавляете макросы в презентацию или сохраняете уже содержащую макросы презентацию, Aspose.Slides просто записывает байты для макросов.
Aspose.Slides никогда не выполняет макросы в презентации.
Добавить VBA Макросы
Aspose.Slides предоставляет класс VbaProject, который позволяет вам создавать VBA проекты (и ссылки на проекты) и редактировать существующие модули. Вы можете использовать интерфейс IVbaProject для управления VBA, встроенным в презентацию.
- Создайте экземпляр класса Presentation.
- Используйте конструктор VbaProject, чтобы добавить новый VBA проект.
- Добавьте модуль в VbaProject.
- Установите исходный код модуля.
- Добавьте ссылки на
. - Добавьте ссылки на Microsoft Office.
- Свяжите ссылки с VBA проектом.
- Сохраните презентацию.
Этот код на 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");
// Добавляет ссылки в 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 макрос.
- Создайте экземпляр класса Presentation и загрузите презентацию, содержащую макрос.
- Получите доступ к модулю макроса и удалите его.
- Сохраните измененную презентацию.
Этот код на 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 Макросы
- Создайте экземпляр класса Presentation и загрузите презентацию, содержащую макрос.
- Проверьте, содержит ли презентация VBA проект.
- Переберите все модули, содержащиеся в 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();
}