Visual Studio 2005 & OLE

horseman

Пробую создать класс для Excel или Word при помощи стандартной процедуры в visualStudio 2005: project->add class-> MFC class from typelib->Microsoft Excel 11.0 ... Выбираю класс _Application. Нажимаю ок. Автоматически создается файл CApplication.h, включается в проект. Инклюдю этот файл в один из .cpp при помощи #include "CApplication.h". Делаю build. Вылезает куча ошибок. Причем ошибки возникают в каком-то файле типа excel.tlh.
По сравнению с предыдущими версиями visual studio (а именно, 2003, если я не ошибаюсь в автоматически создаваемом файле CApplication.h появляется строка вроде
#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE" no_namespace,
из-за которой и возникают ошибки. Если ее закомментировать, то ошибки исчезают.
И еще автоматически создается файл excel.tlh, в котором и возникают ошибки.
Вариант с комментированием строки #import... не очень хорош, потому что, видимо, там определяются некоторые типы данных, которые потом используются в классах Workbooks и workbook.
Вот кусочек возникающих ошибок:
1>e:\irisha\ржд\rsg\capplication.h(3) : warning C4278: 'RGB': identifier in type library 'C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE' is already a macro; use the 'rename' qualifier
1>e:\irisha\ржд\rsg\capplication.h(3) : warning C4278: 'RGB': identifier in type library 'C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE' is already a macro; use the 'rename' qualifier
1>e:\irisha\ржд\rsg\capplication.h(3) : warning C4192: automatically excluding 'IFont' while importing type library 'C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE'
1>e:\irisha\ржд\rsg\debug\excel.tlh(1219) : error C2371: 'FontPtr' : redefinition; different basic types
1> c:\program files\microsoft visual studio 8\vc\include\comdef.h(312) : see declaration of 'FontPtr'
1>e:\irisha\ржд\rsg\debug\excel.tlh(1297) : error C2786: 'BOOL (__stdcall *HDC,int,int,int,int)' : invalid operand for __uuidof
1>e:\irisha\ржд\rsg\debug\excel.tlh(1297) : error C2923: '_com_IIID' : 'Rectangle' is not a valid template type argument for parameter '_Interface'
1> c:\program files\microsoft visual studio 8\vc\platformsdk\include\wingdi.h(3514) : see declaration of 'Rectangle'

Helga87

Мб лучше все сделать на на C++, а на C# или VB.NET? Там работа с COM-объектами и с офисом в частности проще на порядок.

horseman

неа, не пойдет У меня уже почти все написано на С++, осталось только экспорт в Excel добавить. Неохота как-то все заново переписывать...

Helga87

тогда удачи

horseman

спасибо

timefim

Неохота как-то все заново переписывать...
Зачем все переписывать? Напиши этот кусок на шарпе.

horseman

а вы уверены, что на C# все будет работать? Сдается мне, что это какой-то внутренний глюк в VS 2005, который может распространяться на все языки...

Dasar

сюда по ошибкам - это глюки именно C++, просто одни и те же вещи определяются в нескольких местах и чуть-чуть по разному

bleyman

А может, это типа 2005 студия забавно совокупилась с 2003?
Или версия экселя не та?

erotic

В 2005-й студии действительно есть некоторые глюки по сравнению с 2003. Я в этом убедился, в частности, когда использовал Pthreads под винду.

Dasar

> #import "C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE" no_namespace
кстати стоит попробовать убрать настройку no_namespace

horseman

Спасибо всем! В 2005-й студии мне ничего собрать так и не удалось Пришлось эксплуатировать другой комп, на котором установлена студия 2002. Excel, там, правда, тоже помладше: версия 10.0, вместо моего 11.0. В этой старой студии воспользовалась стандартной процедурой создания классов для Excel, сгенерированные файлы перенесла затем на свой комп, включила их в проект, и все стало замечательно работать!
Оставить комментарий
Имя или ник:
Комментарий: