OLE-Objekte automatisch aktualisieren mit einem PowerPoint-Add-In

OLE-Objekte automatisch aktualisieren

Eine der häufigsten Fragen von Aspose.Slides for Java‑Kunden lautet, wie man editierbare Diagramme (oder andere OLE‑Objekte) erstellt oder ändert, sodass sie beim Öffnen der Präsentation automatisch aktualisiert werden. Leider unterstützt PowerPoint automatische Makros nicht auf dieselbe Weise wie Excel und Word. Die einzigen verfügbaren Makros sind Auto_Open und Auto_Close, und diese werden nur automatisch aus einem Add‑In ausgeführt. Dieser kurze technische Hinweis zeigt, wie das erreicht werden kann.

Zunächst stehen mehrere kostenlose Add‑Ins zur Verfügung, die die Auto_Open‑Makrofunktion zu PowerPoint hinzufügen, zum Beispiel AutoEvents Add-in und Event Generator.

Nach der Installation eines dieser Add‑Ins fügen Sie einfach das Makro Auto_Open() (oder OnPresentationOpen(), wenn Sie Event Generator verwenden) zu Ihrer Vorlagenpräsentation hinzu, wie unten gezeigt:

// Durchlaufen jeder Folie in der Präsentation.
for (var oSlide : ActivePresentation.Slides) {
    // Durchlaufen aller Formen auf der aktuellen Folie.
    for (var oShape : oSlide.Shapes) {
        // Prüfen, ob die Form ein OLE‑Objekt ist.
        if ((oShape.Type == msoEmbeddedOLEObject)) {
            // OLE‑Objekt gefunden. Objektverweis abrufen und dann aktualisieren.
            oObject = oShape.OLEFormat.Object;
            oObject.Application.Update();
            // Jetzt das OLE‑Serverprogramm beenden.
            // Dadurch wird Speicher freigegeben und Probleme vermieden.
            // Außerdem oObject auf Nothing setzen, um das Objekt freizugeben.
            oObject.Application.Quit();
            oObject = null;
        }
    }
}

Alle Änderungen an OLE‑Objekten mit Aspose.Slides for Java werden automatisch aktualisiert, wenn PowerPoint die Präsentation öffnet. Wenn Sie viele OLE‑Objekte haben und nicht alle aktualisieren möchten, fügen Sie einfach ein benutzerdefiniertes Tag zu den Formen hinzu, die Sie verarbeiten möchten, und prüfen Sie dieses im Makro.