Atualizar objetos OLE automaticamente usando um add-in do PowerPoint

Introdução

Uma das perguntas mais frequentes feitas pelos clientes do Aspose.Slides for Java é como criar ou modificar gráficos editáveis (ou outros objetos OLE) para que eles sejam atualizados automaticamente quando a apresentação for aberta. Infelizmente, o PowerPoint não oferece suporte a macros automáticas da mesma forma que o Excel e o Word. As únicas macros disponíveis são Auto_Open e Auto_Close, e elas só são executadas automaticamente a partir de um add-in. Esta breve dica técnica mostra como conseguir isso.

Atualizar objetos OLE automaticamente

Primeiro, vários complementos gratuitos estão disponíveis que adicionam a funcionalidade de macro Auto_Open ao PowerPoint, por exemplo AutoEvents Add-in e Event Generator.

Após instalar um desses complementos, basta adicionar a macro Auto_Open() (ou OnPresentationOpen() se você estiver usando o Event Generator) à sua apresentação modelo, conforme mostrado abaixo:

// Percorra cada slide na apresentação.
for (var oSlide : ActivePresentation.Slides) {
    // Percorra todas as formas no slide atual.
    for (var oShape : oSlide.Shapes) {
        // Verifique se a forma é um objeto OLE.
        if ((oShape.Type == msoEmbeddedOLEObject)) {
            // Encontrado um objeto OLE. Obtenha sua referência de objeto e então atualize-o.
            oObject = oShape.OLEFormat.Object;
            oObject.Application.Update();
            // Agora, saia do programa servidor OLE.
            // Isso libera memória e evita quaisquer problemas.
            // Também, defina oObject como Nothing para liberar o objeto.
            oObject.Application.Quit();
            oObject = null;
        }
    }
}

Quaisquer alterações feitas em objetos OLE com Aspose.Slides for Java serão atualizadas automaticamente quando o PowerPoint abrir a apresentação. Se você tem muitos objetos OLE e não deseja atualizá-los todos, basta adicionar uma tag personalizada às formas que precisam ser processadas e verificá-la na macro.