Russian Qt Forum
Апрель 29, 2024, 14:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: ActiveX и Word  (Прочитано 11588 раз)
Rakot
Гость
« : Май 02, 2007, 19:40 »

Всем доброго времени суток.

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

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

З.Ы. Юзаю Qt3.3.5.
Записан
Вудруф
Гость
« Ответ #1 : Май 03, 2007, 08:25 »

Делаешь так: записываешь макрос в Word'е, сохраняешь, смотришь его внутреннюю структуру. Потом через ActiveX вызываешь те же функции, получаешь те же переменные, что и в макросе были.
Записан
Rakot
Гость
« Ответ #2 : Май 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");


Но текст не отображается. Кто-нибудь знает как надо правильно, весь инет аблазил, так и не нашел. Очень нада...
Записан
Вудруф
Гость
« Ответ #3 : Май 04, 2007, 08:10 »

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

И видишь текст на VisualBasic.
Дальше ищешь документацию по ActiveX (если у тебя коммерческая версия, то в assistant'е по ActiveQt должно быть) и смотришь, как получать объекты и вызывать функции.
Записан
Rakot
Гость
« Ответ #4 : Май 04, 2007, 14:32 »

Цитировать

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

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


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

Код:

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


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

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

З.Ы. Я думаю, если сможешь написать, то пригодится очень многим новичкам (компонентное программирование - серьезная вещь).
Записан
Вудруф
Гость
« Ответ #5 : Май 05, 2007, 08:50 »

Не смогу, у меня GPL-версия. Я просто сам так делал для Borland C++ в своё время, но вызовы, как ты понимаешь, там немного по-другому оформлялись.
Так можно узнать названия свойств и функций. А как их вызывать - смотри в документации.
Записан
Rakot
Гость
« Ответ #6 : Май 06, 2007, 01:02 »

to Вудруф: спасибо за советы.

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

Опишите кто как смог.
Записан
AlexVR
Гость
« Ответ #7 : Май 07, 2007, 21:04 »

Если для Office 2003, то всего проще создать XML документ. Берешь, набиваешь документ, сохраняешь его в XML формате, смотришь внутрености и повторяешь пограммно. Так делал для распечатки талонов на обед в одной конторе, правда данные вводились через InfoPath, но это мелочи, главное, максимально быстро реализуется. И память лишними экземплярами Worda не забивается.
Записан
Rakot
Гость
« Ответ #8 : Май 08, 2007, 16:28 »

Цитировать

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


Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 20.