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

Обновление OLE-объектов автоматически

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

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

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

public void Auto_Open()
{
    // Перебор всех слайдов в презентации.
    foreach (var oSlide in ActivePresentation.Slides)
    {
        // Перебор всех фигур на текущем слайде.
        foreach (var oShape in 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 .NET будут автоматически применяться при открытии презентации в PowerPoint. Если у вас много OLE‑объектов и вы не хотите обновлять их все, просто добавьте пользовательский тег к нужным фигурам и проверяйте его в макросе.