OleObjectFrameを追加する際のオブジェクト変更問題

説明と解決策

Aspose.Slidesは、OLEオブジェクトが変更され、プレビュー画像を更新する必要があることを通知するためにオブジェクトが変更されましたというメッセージを表示します。

たとえば、Microsoft Excelのチャートをスライドに**OleObjectFrame**として追加し(詳細はOLEを管理する記事を参照)、その後プレゼンテーションをMicrosoft PowerPointアプリで開くと、スライドにこの画像が表示されます:

すべての画像を新しい画像に置き換える

todo:image_alt_text

OLEオブジェクトがスライドに追加されたことを確認したい場合は、オブジェクトが変更されましたというメッセージをダブルクリックするか、右クリックしてワークシートオブジェクト > 編集オプションを選択する必要があります。

todo:image_alt_text

PowerPointは埋め込まれたOLEオブジェクトを開きます。

todo:image_alt_text

スライドにはオブジェクトが変更されましたというメッセージが残る場合があります。OLEオブジェクトをクリックすると、スライドのプレビューが更新され、オブジェクトが変更されましたというメッセージがOLEオブジェクトの実際の画像に置き換わります。

todo:image_alt_text

今、OLEオブジェクトの画像が正しく更新されるようにプレゼンテーションを保存したいかもしれません。この方法でプレゼンテーションを保存した後、再度プレゼンテーションを開くと、オブジェクトが変更されましたというメッセージは表示されません。

その他の解決策

解決策 1: オブジェクトが変更されましたメッセージを画像と置き換える

PowerPointでプレゼンテーションを開いて保存することにより、オブジェクトが変更されましたというメッセージを削除したくない場合は、メッセージを好みのプレビュー画像で置き換えることができます。以下のコードは、そのプロセスを示しています。

using (Presentation pres = new Presentation("embeddedOle.pptx"))
{
   ISlide slide = pres.Slides[0];
   IOleObjectFrame oleObjectFrame = (IOleObjectFrame)slide.Shapes[0];
    
   IPPImage oleImage = pres.Images.AddImage(File.ReadAllBytes("my_image.png"));
   oleObjectFrame.SubstitutePictureTitle = "私のタイトル";
   oleObjectFrame.SubstitutePictureFormat.Picture.Image = oleImage;
   oleObjectFrame.IsObjectIcon = false;
    
   pres.Save("embeddedOle-newImage.pptx", SaveFormat.Pptx);
}

OleObjectFrameを含むスライドは次のように変わります。

todo:image_alt_text

解決策 2: PowerPoint用のアドオンを作成する

プレゼンテーションをプログラムで開いたときにすべてのOLEオブジェクトを更新するMicrosoft PowerPoint用のアドオンを作成することもできます。