Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: COM/DCOM/ActiveX/ATL/CORBA > Microsoft Office Automation


Автор: v00d00 16.11.2009, 18:17
Пытаюсь создать автоматизацию для MS Word 2003 в Visual Studio 2008...
Плохое начало для понедельника...


В нете туча инфы для 6 вижуал студии, но они банально не подходят для 2008, нет некоторых мастеров и шоткеи не те.
Пожалуйста, поделитесь ссылками на актуальные способы для работы с офисом из С++(Unmanaged) так чтобы это не казалось адом.

Автор: v00d00 17.11.2009, 17:27
Удалось добиться следующего:

Код

        pWrd.CreateInstance(L"Word.Application");

        pWrd->Visible = VARIANT_TRUE;

        _DocumentPtr wdoc = pWrd->Documents->Open(&_variant_t("..."));

        for (long i=1;i<=wdoc->InlineShapes->Count;i++)
        {
            InlineShapePtr shape = wdoc->InlineShapes->Item(i);
            BSTR bstrStatus;
            shape->GetOLEFormat()->get_ProgID(&bstrStatus);
        }


Файл открывается. Запускается цикл по инлайн шейпам.
Когда пытаюсь прочесть ProgID вылетает эксепшн "Неправильный указатель". 

В чем бок?

Добавлено через 3 минуты и 23 секунды
Метод для получения строки из интерфейса InlineShape

Код

      virtual HRESULT __stdcall get_ProgID (
        /*[out,retval]*/ BSTR * prop ) = 0;


Добавлено через 4 минуты и 29 секунд
Т.е. определение метода означает что он не реализован?

Добавлено через 12 минут и 57 секунд
Еще одна странность

IntelliSense откуда то хватает определение поля progID 

Но компилятор матерится на такую строчку

Код

BSTR data = format->progID

Автор: v00d00 17.11.2009, 17:58
Код

BSTR data = format->ProgID


Проворонил описание свойства.

Компилируется, но выдает ту же ошибку что и при прямом вызове Get_ProgID
Код


E_POINTER

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)