Как использовать PowerPoint Automation в C++ Builder?

Я получаю это сообщение об ошибке при попытке открыть файл PowerPoint (ppt) с помощью автоматизации вариантов:

Неизвестное имя

Я попытался с помощью автоматизации:

// Open PPT File
void TMainForm::OpenPPTFile(UnicodeString APPTFile)
{

    UnicodeString ppt_path = ExtractFilePath(Application->ExeName)+"ppt\\";
    UnicodeString ppt_filename = ppt_path+APPTFile;
    Variant PowerPoint;

    if ( !DirectoryExists(ppt_path) )
    {
        Application->MessageBoxW(L"The specified Directory does't exist!", L"Error", MB_OK);
        return;
    }

    if ( !FileExists(ppt_filename) )
    {
        Application->MessageBoxW(L"The specified File does't exist!", L"Error", MB_OK);
        return;
    }

    PowerPoint = CreateOleObject("PowerPoint.Application");

    if ( PowerPoint.IsEmpty() )
    {
        Application->MessageBoxW(L"Unable to open Powerpoint, please check if installed!", L"Error", MB_OK);
        return;
    }

    PowerPoint.OlePropertySet("Enabled", true);
    PowerPoint.OlePropertySet("Visible", true);
    PowerPoint.OlePropertyGet("Presentations").OleProcedure("Open", ppt_filename, false, false, true);

}

Этот код дает мне ошибку выше.Примечание. PowerPoint открывается без ошибок в фоновом режиме, но ppt - нет.

0 ответов

Эта ошибка возникает, когда свойство, функция или метод, на которые вы ссылаетесь, не существует. Application объект не имеет Enabledсвойство MSDN. Открытьppt вы должны использовать WideString тип для ppt_filename потому что этот тип совместим с BSTRиспользуется с COM-объектами, либо следует использовать StringToOleStr().

Другие вопросы по тегам