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

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

Один из самых частых вопросов, задаваемых клиентами Aspose.Slides, касается того, как создать или изменить редактируемые графики или другие OLE-объекты и сделать так, чтобы они автоматически обновлялись при открытии презентации. К сожалению, PowerPoint не поддерживает автоматические макросы, доступные в Excel и Word. Единственные доступные - это макросы Auto_Open и Auto_Close. Однако они запускаются автоматически только из надстройки. Этот короткий технический совет показывает, как этого добиться.

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

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

Shape oShape;
Slide oSlide;
// Loop through each slide in the presentation.
for (var oSlide : ActivePresentation.Slides) {
// Loop through all the shapes on the current slide.
for (var oShape : oSlide.Shapes) {
// Check whether the shape is an OLE object.
if ((oShape.Type == msoEmbeddedOLEObject)) {
// Found an OLE object; obtain object reference, and then update.
oObject = oShape.OLEFormat.Object;
oObject.Application.Update();
// Now, quit out of the OLE server program. This frees
// memory, and prevents any problems. Also, set oObject equal
// to Nothing to release the object.
oObject.Application.Quit();
oObject = null;
}
}
}