Презентация через VBA
Пространство имен Aspose.Slides.Vba содержит классы и интерфейсы для работы с макросами и кодом VBA.
Примечание
Когда вы конвертируете презентацию, содержащую макросы, в другой формат файла (PDF, HTML и т. д.), Aspose.Slides игнорирует все макросы (макросы не переносятся в результирующий файл).
Когда вы добавляете макросы в презентацию или сохраняете презентацию, содержащую макросы, Aspose.Slides просто записывает байты для макросов.
Aspose.Slides никогда не выполняет макросы в презентации.
Добавить VBA макросы
Aspose.Slides предоставляет класс VbaProject, который позволяет вам создавать VBA проекты (и ссылки на проект) и редактировать существующие модули. Вы можете использовать интерфейс IVbaProject для управления VBA, встроенным в презентацию.
- Создайте экземпляр класса Presentation.
- Используйте конструктор VbaProject для добавления нового VBA проекта.
- Добавьте модуль в VbaProject.
- Установите исходный код модуля.
- Добавьте ссылки на
. - Добавьте ссылки на Microsoft Office.
- Свяжите ссылки с VBA проектом.
- Сохраните презентацию.
Этот код на C# показывает, как добавить VBA макрос с нуля в презентацию:
// Создает экземпляр класса презентации
using (Presentation presentation = new Presentation())
{
// Создает новый VBA проект
presentation.VbaProject = new VbaProject();
// Добавляет пустой модуль в VBA проект
IVbaModule module = presentation.VbaProject.Modules.AddEmptyModule("Модуль");
// Устанавливает исходный код модуля
module.SourceCode = @"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 проект
presentation.VbaProject.References.Add(stdoleReference);
presentation.VbaProject.References.Add(officeReference);
// Сохраняет презентацию
presentation.Save(dataDir + "AddVBAMacros_out.pptm", SaveFormat.Pptm);
}
Удалить VBA макросы
С помощью свойства VbaProject в классе Presentation вы можете удалить VBA макрос.
- Создайте экземпляр класса Presentation и загрузите презентацию, содержащую макрос.
- Получите доступ к модулю макроса и удалите его.
- Сохраните измененную презентацию.
Этот код на C# показывает, как удалить VBA макрос:
// Загружает презентацию, содержащую макрос
using (Presentation presentation = new Presentation(dataDir + "VBA.pptm"))
{
// Получает доступ к Vba модулю и удаляет его
presentation.VbaProject.Modules.Remove(presentation.VbaProject.Modules[0]);
// Сохраняет презентацию
presentation.Save(dataDir + "RemovedVBAMacros_out.pptm", SaveFormat.Pptm);
}
Извлечь VBA макросы
- Создайте экземпляр класса Presentation и загрузите презентацию, содержащую макрос.
- Проверьте, содержит ли презентация проект VBA.
- Переберите все модули, содержащиеся в проекте VBA, чтобы просмотреть макросы.
Этот код на C# показывает, как извлечь VBA макросы из презентации, содержащей макросы:
// Загружает презентацию, содержащую макрос
using (Presentation pres = new Presentation("VBA.pptm"))
{
if (pres.VbaProject != null) // Проверяет, содержит ли презентация проект VBA
{
foreach (IVbaModule module in pres.VbaProject.Modules)
{
Console.WriteLine(module.Name);
Console.WriteLine(module.SourceCode);
}
}
}
Проверка, защищен ли проект VBA паролем
Используя свойство IVbaProject.IsPasswordProtected, вы можете проверить, защищены ли свойства проекта паролем.
- Создайте экземпляр класса Presentation и загрузите презентацию, содержащую макрос.
- Проверьте, содержит ли презентация VBA проект.
- Проверьте, защищен ли проект VBA паролем для просмотра свойств проекта.
Этот код на C# демонстрирует операцию:
using (Presentation pres = new Presentation("VBA.pptm"))
{
if (pres.VbaProject == null) // Проверяет, содержит ли презентация проект VBA
return;
if (pres.VbaProject.IsPasswordProtected)
{
Console.WriteLine("Проект VBA '" + pres.VbaProject.Name +
"' защищен паролем для просмотра свойств проекта.");
}
}