Презентация через VBA
Примечание
Когда вы конвертируете презентацию, содержащую макросы, в другой формат файла (PDF, HTML и т. д.), Aspose.Slides игнорирует все макросы (макросы не переносятся в результирующий файл).
Когда вы добавляете макросы в презентацию или повторно сохраняете презентацию, содержащую макросы, Aspose.Slides просто записывает байты для макросов.
Aspose.Slides никогда не выполняет макросы в презентации.
Добавление VBA Макросов
Aspose.Slides предоставляет класс VbaProject, который позволяет вам создавать проекты VBA (и ссылки на проекты) и редактировать существующие модули. Вы можете использовать интерфейс IVbaProject для управления VBA, встроенной в презентацию.
- Создайте экземпляр класса Presentation.
- Используйте конструктор VbaProject для добавления нового проекта VBA.
- Добавьте модуль в VbaProject.
- Установите исходный код модуля.
- Добавьте ссылки на
. - Добавьте ссылки на Microsoft Office.
- Свяжите ссылки с проектом VBA.
- Сохраните презентацию.
Этот PHP код показывает, как добавить VBA макрос с нуля в презентацию:
# Создает экземпляр класса презентации
$pres = new Presentation();
try {
# Создает новый VBA проект
$pres->setVbaProject(new VbaProject());
# Добавляет пустой модуль в VBA проект
$module = $pres->getVbaProject()->getModules()->addEmptyModule("Module");
# Устанавливает исходный код модуля
$module->setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
# Создает ссылку на <stdole>
$stdoleReference = new VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
# Создает ссылку на Office
$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 (!java_is_null($pres)) {
$pres->dispose();
}
}
Удаление VBA Макросов
Используя свойство VbaProject в классе Presentation, вы можете удалить VBA макрос.
- Создайте экземпляр класса Presentation и загрузите презентацию, содержащую макрос.
- Получите доступ к модулю макроса и удалите его.
- Сохраните измененную презентацию.
Этот PHP код показывает, как удалить VBA макрос:
# Загружает презентацию, содержащую макрос
$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 (!java_is_null($pres)) {
$pres->dispose();
}
}
Извлечение VBA Макросов
- Создайте экземпляр класса Presentation и загрузите презентацию, содержащую макрос.
- Проверьте, содержит ли презентация проект VBA.
- Пройдитесь по всем модулям, содержащимся в проекте VBA, чтобы просмотреть макросы.
Этот PHP код показывает, как извлечь VBA макросы из презентации, содержащей макросы:
# Загружает презентацию, содержащую макрос
$pres = new Presentation("VBA.pptm");
try {
# Проверяет, содержит ли презентация проект VBA
if (!java_is_null($pres->getVbaProject())) {
foreach($pres->getVbaProject()->getModules() as $module) {
echo($module->getName());
echo($module->getSourceCode());
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}