Почему Shapes.Item возвращает ошибку 0x8004005 в PowerPoint 2007?

Сначала я протестировал этот код (простой код для создания нового файла и удаления всех фигур) с помощью 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. Я искал это сообщение об ошибке и ничего не получил. Я даже пытался использовать файл typelib версии 2007 года, и это тоже не сработало. Через некоторое время я решил просто вернуться к использованию IDispatch::Invoke метод (который был боль) и это как-то сработало. Не уверен, почему это сработало и почему мои предыдущие попытки не сработали.

я использую #import и умные указатели для импорта библиотеки Microsoft Office в мой код.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]