MS Office в MFC приложениях
От: Игорь Ткачёв Россия linq2db.com
Дата: 15.07.01 00:55
Оценка: 90 (5) +1
Статья:
MS Office в MFC приложениях
Автор(ы): Игорь Ткачёв
Дата: 24.03.2001

Однажды я занимался проектом, главной особенностью которого было наличие большого количества типовых форм ввода и вывода. Что-то типа делопроизводства. Документы должны были заполняться данными из БД или другими данными, которые может предоставить программа. При этом было бы крайне желательно, чтобы шаблон документа мог разобраться с этими данными самостоятельно.
Оказалось, что всем этим требованиям вполне удовлетворяет MS Office. В этой статье я попытаюсь это продемонстрировать.


Авторы:
Игорь Ткачёв

Аннотация:
Однажды я занимался проектом, главной особенностью которого было наличие большого количества типовых форм ввода и вывода. Что-то типа делопроизводства. Документы должны были заполняться данными из БД или другими данными, которые может предоставить программа. При этом было бы крайне желательно, чтобы шаблон документа мог разобраться с этими данными самостоятельно.

Оказалось, что всем этим требованиям вполне удовлетворяет MS Office. В этой статье я попытаюсь это продемонстрировать.
Если нам не помогут, то мы тоже никого не пощадим.
Re:Как сделать, чтобы не пропадали тулбары?
От: CooLer Россия http://bestsoft.far.ru
Дата: 21.07.01 05:50
Оценка: 3 (1)
From: http://forum.ixbt.com/ubb/Forum26/HTML/005151.html

BOOL CMainFrame::NegotiateBorderSpace(UINT nBorderCmd, LPRECT lpRectBorder)
{
return FALSE;
}

Этот код в CMainFrame не даёт появляться тулбару сервера.

BOOL CAppToolCntrItem::OnShowControlBars(CFrameWnd* pFrameWnd, BOOL bShow)
{
return FALSE;
}

А этот не даёт убирать свой. CAppToolCntrItem — класс в cntrlitem.h/cpp.

Если убрать NegotiateBorderSpace, то будут видны оба тулбара.
"Выше голову" — сказл палач, надевая петлю
Как сделать, чтобы не пропадали тулбары?
От: abibok  
Дата: 16.07.01 00:55
Оценка:
Я хочу, чтобы в том же фрейме, который содержит embedded Excel, оставался и мой тулбар из ресурса. Как это сделать?

P.S. Меню и акселераторы объединяются без проблем.
Ошибка в коде...
От: Аноним  
Дата: 12.09.01 17:10
Оценка:
Пункт 5, функция NewXOfficeDoc()
Вместо
        if (temp->GetDocString(str,CDocTemplate::docName) {
            str == _T("XOffice")) {....}

Следует читать (компилировать :)
        if (temp->GetDocString(str,CDocTemplate::docName) &&
            str == _T("XOffice")) {....}
Вопль
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 28.09.01 00:04
Оценка:
Мир тесен, и теперь мне пришлось управлять проектом, который должен замеситить тот из-за которого был заброшен проект про который говориться во введении :)

Черт, как не хватает знаний ...
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re: Вопль
От: CooLer Россия http://bestsoft.far.ru
Дата: 28.09.01 02:30
Оценка:
Да ладно, Дима. Не переживай ты так, всё будет хорошо. :)
"Выше голову" — сказл палач, надевая петлю
Не подключается MSACC9.OLB
От: Y_N_Sirota  
Дата: 18.10.01 20:45
Оценка:
Хочу показать отчет, созданный в Access, в своей программе. Делаю #import "C:\Program Files\Microsoft Office\Office\MSACC9.OLB", выдает ошибку "error C2501: '_ConnectionPtr' : missing storage-class or type specifiers".
Re: Не подключается MSACC9.OLB
От: CooLer Россия http://bestsoft.far.ru
Дата: 19.10.01 01:08
Оценка:
А если попробовать подключить его через Office.h из демонстрационного проекта статьи?
"Выше голову" — сказл палач, надевая петлю
Re: Не подключается MSACC9.OLB
От: Y_N_Sirota  
Дата: 21.10.01 20:23
Оценка:
Так в проекте строчки, относящиеся к Access, закомментированы. Если их разкомментировать, проект не удается откомпилировать. Я у себя в проекте с этой проблемой столкнулся, стал искать информацию, нашел XOffice, но там теже проблемы. Мой вопрос именно к проекту XOffice и относится, я там только строчки разкоментировал.
Мелкие химичат
От: CooLer Россия http://bestsoft.far.ru
Дата: 22.10.01 04:25
Оценка:
Да, действеительно... когда я писал статью, всё работало нормально. Но сейчас у меня тоже глючит. MS добавили в библиотеку типов Аксеса ADO, так что лечится это просто добавлением ещё одного импорта:

#import "C:\Program Files\Common Files\System\ADO\msado21.tlb" \
rename("EOF","EndOfFile") rename("BOF","BegOfFile")
#import "C:\Program Files\Common Files\Microsoft Shared\DAO\DAO360.DLL" \
rename("EOF","EndOfFile") rename("BOF","BegOfFile")
#import "C:\Program Files\Microsoft Office\Office\MSACC9.OLB"
"Выше голову" — сказл палач, надевая петлю
При компиляции - ошибка error C2146: syntax error
От: x29anton  
Дата: 15.02.02 06:27
Оценка:
При компиляции выдёт ошибку:
e:\work\visual c++ projects\officedemo\src\debug\msword9.tlh(3718) : error C2146: syntax error : missing ';' before identifier 'VBE'
и далее 28 ошибок...
У меня Office 2000 — 9.0.2812(пытаюсь скомпилировать пример с Word)
Может, ещё что надо подключить?
C уважением, Антон
Re: Ошибка в коде...
От: CooLer Россия http://bestsoft.far.ru
Дата: 15.02.02 06:34
Оценка:
Смотри комментарий "Не подключается MSACC9.OLB"
Вот поставлю себе Office XP, тогда сделают подключение к нему и подремонтирую это глюк.
"Выше голову" — сказл палач, надевая петлю
использование MS word для конвертирования файлов
От: _Yura  
Дата: 31.01.03 21:20
Оценка:
Подскажиет пожайлуста, каким оброзом, можно, имролбзыя автоматизацию открыть Word, загрузить файлик (rtf), затем закрыть , сохранив в формате HTML? Спасибо....
А OLE Automation в VC сильно тормозит?
От: VinMike Россия  
Дата: 01.02.03 10:02
Оценка:
Пытаюсь делать нечnо подобное на VB :). Но Обращение из VB по COMу к ячейкам Excelа(работающиего в другом процессе) занимает с среднем в 10 раз больше времени чем в самом Excel-VBA, что не годится :(
А как c этим в С++? Что тормозит — межпроцесорный вызов?
Re: А OLE Automation в VC сильно тормозит?
От: Saddam Россия http://saddam.narod.ru
Дата: 06.05.03 09:29
Оценка:
Получать и передавать сразу массив ячеек.
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Re: При компиляции - ошибка error C2146: syntax error
От: Аноним  
Дата: 17.09.03 19:07
Оценка:
Здравствуйте, x29anton, Вы писали:
......
......
У меня похожая беда... В группе лабаем проект, у меня все работает, компилится, а на другой тачке та же тема(порядка 20 обломов, VBE и Word). Почему — не втыкаемся, может кто знает в чем беда?
P.S. В истерике начинаем грешить на версии офиса- 2000 SP1 у меня отечественный, у него — забугорный
Re: MS Office в MFC приложениях
От: Valery  
Дата: 30.09.03 15:23
Оценка:
Здравствуйте, Игорь Ткачёв.

Послал вопрос отдельно в MFC — но наверное лучше повторить в нитке.

В Debug — версии отрабатывает ASSERT в методе CDocTemplate::AddDocument

void CDocTemplate::AddDocument(CDocument* pDoc)
{
ASSERT_VALID(pDoc);
------> ASSERT(pDoc->m_pDocTemplate == NULL); // no template attached yet
pDoc->m_pDocTemplate = this;
}



В Release — все нормально. С чем это может быть Связано?
Может какие-то обновления сделать?
Re: MS Office в MFC приложениях
От: Дворянников Юрий Вячеславович Россия http://dvoryannikov.photosight.ru
Дата: 17.10.03 11:47
Оценка:
Здравствуйте, Игорь Ткачёв, Вы писали:

ИТ>Статья:



ИТ>Авторы:

ИТ> Игорь Ткачёв

ИТ>Аннотация:

ИТ>Однажды я занимался проектом, главной особенностью которого было наличие большого количества типовых форм ввода и вывода. Что-то типа делопроизводства. Документы должны были заполняться данными из БД или другими данными, которые может предоставить программа. При этом было бы крайне желательно, чтобы шаблон документа мог разобраться с этими данными самостоятельно.

Все это отлично. Кроме одного: все примеры, работающие с Word — это запускаемые приложения. Мне же нужно, чтобы все это делалось из Dll. Т.е. из внешней программы запускается экспортируемая функция, параметром в которую передается хэндл клиенской области MDIChild окна. И внутри него моя Dll должна запустить Word. Это возможно?
http://dvoryannikov.photosight.ru
Re: MS Office в MFC приложениях
От: Аноним  
Дата: 26.05.04 14:06
Оценка:
Здравствуйте, Игорь Ткачёв, Вы писали:

ИТ>[...]


Можно создавать объект Document или Window, не создав объекта Application? Или только последовательно Application, Documents, Document, в соответствии со схемой вложенности объектов?
Можно где почитать про автоматизацию Ворда?
Re: MS Office в MFC приложениях
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 28.05.04 05:27
Оценка:
Доброе время суток, Игорь!

Скажите, а почему в Вашем примере не используется angle-bracket form директивы #import? Ведь в этом случае исходный текст программы не будет нуждаться в исправлении при переносе с компа на комп (где Офис может быть установлен в совершенно другую папку) — достаточно лишь добавить соответствующие папки в список Include directories в IDE (Tools -> Options -> Directories).
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
Re: MS Office в MFC приложениях
От: Аноним  
Дата: 03.02.06 10:18
Оценка:
Скачал исходники попробовал откомпилить в VC 7.1 -с горем пополам откомпилилось, но запуститься так и не удалось. А вот пример готовый скачать и запустить удалось, а главное у меня Office 2003 и пути котрый прописаны в word.h не совпадают с реальными, однако приложение работает. Отсюда можно заключит что исходники устарели — не могли бы вы выложит последние исходники?
спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.