PowerPoint アドインを使用して OLE オブジェクトを自動的に更新する

OLE オブジェクトを自動的に更新する

Aspose.Slides for Java のお客様から最も頻繁に寄せられる質問の一つは、プレゼンテーションを開いたときに自動的に更新される編集可能なチャート(またはその他の OLE オブジェクト)を作成または変更する方法です。残念ながら、PowerPoint は Excel や Word と同様に自動マクロをサポートしていません。利用できるマクロは Auto_OpenAuto_Close だけで、これらはアドインから自動的に実行されます。この短いテクニカルチップでは、その実現方法を示します。

まず、PowerPoint に Auto_Open マクロ機能を追加するフリーウェアのアドインがいくつか利用可能です。例として AutoEvents Add-inEvent Generator が挙げられます。

これらのアドインのいずれかをインストールしたら、以下のようにテンプレートプレゼンテーションに Auto_Open() マクロ(Event Generator を使用している場合は OnPresentationOpen())を追加するだけです:

// プレゼンテーション内の各スライドをループ処理します。
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;
        }
    }
}

Aspose.Slides for Java で OLE オブジェクトに加えた変更は、PowerPoint がプレゼンテーションを開くと自動的に更新されます。多数の OLE オブジェクトがありすべてを更新したくない場合は、処理する必要があるシェイプにカスタムタグを付け、マクロ内でそのタグをチェックしてください。