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
苦痛でした) 。なぜそれがうまくいったのか、なぜ私の以前の試みがうまくいかなかったのかわからない.
#import
Microsoft Office ライブラリをコードにインポートするためにスマート ポインターを使用しています。