Russian Qt Forum

Qt => ActiveX => Тема начата: Rakot от Май 02, 2007, 19:40



Название: ActiveX и Word
Отправлено: Rakot от Май 02, 2007, 19:40
Всем доброго времени суток.

Недавно узнал, что для вставки данных(текст, рисунок) в документ Word, можно использовать технологию ActiveX. Понял, как получить указатель на word, сделать его видимым, но не могу понять структуру в Word.

На какие объекты надо получать указатели и как затем сохранять в них данные(текст, рисунок)?

З.Ы. Юзаю Qt3.3.5.


Название: ActiveX и Word
Отправлено: Вудруф от Май 03, 2007, 08:25
Делаешь так: записываешь макрос в Word'е, сохраняешь, смотришь его внутреннюю структуру. Потом через ActiveX вызываешь те же функции, получаешь те же переменные, что и в макросе были.


Название: ActiveX и Word
Отправлено: Rakot от Май 03, 2007, 18:55
Цитировать

Делаешь так: записываешь макрос в Word'е, сохраняешь, смотришь его внутреннюю структуру. Потом через ActiveX вызываешь те же функции, получаешь те же переменные, что и в макросе были.


А можно примерчик или ссылки, где можно прочитать о макросах, или книжечки, которые подойдут для данной темы.

добавлено спустя 3 часа 19 минут:

 
Цитировать

глянь тут
http://prog.org.ru/forum/htopic_3523_excel.html

и сделай по форуму поиск Excel


Смотрел, но так и не понял в чем разница между Excel и Word, что для Word нужно?

добавлено спустя 1 час 41 минуту:

 Делаю:

Код:

    QAxObject* word = new QAxObject( "Word.Application", this );
    word->dynamicCall( "SetVisible(bool)", true );

    QAxObject *workbook = word->querySubObject( "Open(const QString&)", str+".doc");

QAxObject *range = workbook->querySubObject( "Range(const QString&)", "Hello");


Но текст не отображается. Кто-нибудь знает как надо правильно, весь инет аблазил, так и не нашел. Очень нада...


Название: ActiveX и Word
Отправлено: Вудруф от Май 04, 2007, 08:10
Ну записать в word'е макрос - проще простого.
Сервис -> Макрос -> Начать запись.
Делаешь вставку текста или что-нибудь другое.
Сервис -> Макрос -> Остановить запись.
Сервис -> Макрос -> Макросы
Выбираешь вновь записанный
Изменить

И видишь текст на VisualBasic.
Дальше ищешь документацию по ActiveX (если у тебя коммерческая версия, то в assistant'е по ActiveQt должно быть) и смотришь, как получать объекты и вызывать функции.


Название: ActiveX и Word
Отправлено: Rakot от Май 04, 2007, 14:32
Цитировать

Ну записать в word'е макрос - проще простого.
Сервис -> Макрос -> Начать запись.
Делаешь вставку текста или что-нибудь другое.
Сервис -> Макрос -> Остановить запись.
Сервис -> Макрос -> Макросы
Выбираешь вновь записанный
Изменить

И видишь текст на VisualBasic.
Дальше ищешь документацию по ActiveX (если у тебя коммерческая версия, то в assistant'е по ActiveQt должно быть) и смотришь, как получать объекты и вызывать функции.


Делаю все так, как ты сказал. Макрос имеет следующий вид (вставка текста из другого приложения):

Код:

Sub Макрос1()
    Selection.Paste
End Sub


Долго рылся в Qt Assistant, нашел пример с Outlook. Но опять же не понятна структура самого Word. В примере из форума про Excel (Синтез QT и Excel) до самой вставки значения, выполнялась целая куча получения различных указателей. По приведенному выше макросу я не вижу что за указатели нужны.

Если не сложно напиши(или если сможешь), как правильно вставить, например, текст  в Word.

З.Ы. Я думаю, если сможешь написать, то пригодится очень многим новичкам (компонентное программирование - серьезная вещь).


Название: ActiveX и Word
Отправлено: Вудруф от Май 05, 2007, 08:50
Не смогу, у меня GPL-версия. Я просто сам так делал для Borland C++ в своё время, но вызовы, как ты понимаешь, там немного по-другому оформлялись.
Так можно узнать названия свойств и функций. А как их вызывать - смотри в документации.


Название: ActiveX и Word
Отправлено: Rakot от Май 06, 2007, 01:02
to Вудруф: спасибо за советы.

А вообще реально какими-либо способами вставить картинку в Word. Неужели никто не занимался этим вопросом.

Опишите кто как смог.


Название: ActiveX и Word
Отправлено: AlexVR от Май 07, 2007, 21:04
Если для Office 2003, то всего проще создать XML документ. Берешь, набиваешь документ, сохраняешь его в XML формате, смотришь внутрености и повторяешь пограммно. Так делал для распечатки талонов на обед в одной конторе, правда данные вводились через InfoPath, но это мелочи, главное, максимально быстро реализуется. И память лишними экземплярами Worda не забивается.


Название: ActiveX и Word
Отправлено: Rakot от Май 08, 2007, 16:28
Цитировать

Если для Office 2003, то всего проще создать XML документ. Берешь, набиваешь документ, сохраняешь его в XML формате, смотришь внутрености и повторяешь пограммно. Так делал для распечатки талонов на обед в одной конторе, правда данные вводились через InfoPath, но это мелочи, главное, максимально быстро реализуется. И память лишними экземплярами Worda не забивается.


Спасибо.