0

PowerPoint 2016 を使用して、このコード (新しいファイルを作成し、すべての図形を削除する単純なコード) を最初にテストしました。

using namespace PowerPoint;

//Load currently running PowerPoint
_ApplicationPtr pptApp;
HRESULT hr = pptApp.GetActiveObject(__uuidof(PowerPoint::Application));

//Create new file with a new slide
_PresentationPtr presEdit = pptApp->Presentations->Add(msoTrue);
_SlidePtr slide = presEdit->Slides->Add(1, PpSlideLayout::ppLayoutText);

//Delete all shapes.
while (slide->Shapes->Count > 0)
{
    //This line seems to give an error in 2007
    PowerPoint::ShapePtr shp = slide->Shapes->Item(1); 
    shp->Delete(); 
}

しかし、Powerpoint 2007 でテストしたところ、奇妙なことが起こりました。Shapes->Itemメソッドを呼び出す_com_errorと、エラー コード 0x80004005 (Unspecified Error) のメッセージShapes (unknown member) : Failed.がスローされ、このエラー メッセージを検索しても何も得られませんでした。2007 バージョンの typelib ファイルを使用してみましたが、どちらも機能しませんでした。しばらくして、メソッドの使用に戻ることにしました(これIDispatch::Invoke苦痛でした) 。なぜそれがうまくいったのか、なぜ私の以前の試みがうまくいかなかったのかわからない.

#importMicrosoft Office ライブラリをコードにインポートするためにスマート ポインターを使用しています。

4

0 に答える 0