Обновление OLE‑объектов автоматически с помощью надстройки PowerPoint

Автоматическое обновление OLE‑объектов

Один из самых частых вопросов, задаваемых клиентами Aspose.Slides for Java, — как создать или изменить редактируемые диаграммы (или другие OLE‑объекты), чтобы они обновлялись автоматически при открытии презентации. К сожалению, PowerPoint не поддерживает автоматические макросы так же, как Excel и Word. Доступны только макросы Auto_Open и Auto_Close, и они работают автоматически только из надстройки. В этом небольшом техническом совете показано, как добиться этого.

Во‑первых, доступно несколько бесплатных надстроек, которые добавляют функцию макроса Auto_Open в PowerPoint, например AutoEvents Add‑in и Event Generator.

После установки одной из этих надстроек просто добавьте макрос Auto_Open() (или OnPresentationOpen(), если вы используете Event Generator) в шаблон презентации, как показано ниже:

// Перебрать каждый слайд в презентации.
for (var oSlide : ActivePresentation.Slides) {
    // Перебрать все фигуры на текущем слайде.
    for (var oShape : oSlide.Shapes) {
        // Проверить, является ли фигура OLE‑объектом.
        if ((oShape.Type == msoEmbeddedOLEObject)) {
            // Найден OLE‑объект. Получить его ссылку и затем обновить его.
            oObject = oShape.OLEFormat.Object;
            oObject.Application.Update();
            // Теперь выйти из программы сервера OLE.
            // Это освобождает память и предотвращает проблемы.
            // Также установить oObject в Nothing, чтобы освободить объект.
            oObject.Application.Quit();
            oObject = null;
        }
    }
}

Любые изменения, внесённые в OLE‑объекты с помощью Aspose.Slides for Java, будут автоматически обновляться при открытии презентации в PowerPoint. Если у вас много OLE‑объектов и вы не хотите обновлять их все, просто добавьте пользовательский тег к нужным фигурам и проверяйте его в макросе.