Russian Qt Forum
Декабрь 04, 2023, 08:40
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
ActiveX
>
ActiveQt and Word
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: ActiveQt and Word (Прочитано 20508 раз)
R_a_f_f
Гость
ActiveQt and Word
«
:
Ноябрь 22, 2007, 17:27 »
Доброго времени суток!!! Возникла проблема при работе с Word в Qt. Заключается в следующем:
Код:
QAxObject* WordApplication=new QAxObject("Word.Application"); // Создаю интерфейс к MSWord
QAxObject* WordDocuments = WordApplication->querySubObject( "Documents()" ); // Получаю интерфейсы к его подобъекту "коллекция открытых документов":
QAxObject* NewDocument = WordDocuments->querySubObject( "Add()" ); // Создаю новый документ
WordApplication->setProperty("Visible", true); // Делаем Word видимым
Как же теперь в этот новый документ что-нибудь программно вставить(Например текст "123456")? Буду очень признателен за любую помощь.
Записан
R_a_f_f
Гость
Re: ActiveQt and Word
«
Ответ #1 :
Ноябрь 23, 2007, 09:43 »
Уважаемые!!! Неужели никто ничто не может ответить??? Вопрос может показаться глупым, но это не так. Прочитав все сообщения на форуме и испробовав множество предложенных вариантов(Начиная от Visual Basic и заканчивая dumpcpp) к решению данной задачи не пришёл.
Записан
Tonal
Гость
Re: ActiveQt and Word
«
Ответ #2 :
Ноябрь 23, 2007, 11:49 »
Для документа получи регион по умолчанию, (Range) и зави его функцию InsertAfter
Это, а так же многое другие интересные вещи можно узнать из встроенной в Ворд справке по VBA.
Так же эта информация присутствует в любом MSDN-е.
Кроме того, в самом Ворде можно включить запись макроса, проделать нузные действия руками и после отключения записи полюбоваться на результат во встроенном редакторе VBA.
Ну и гугль вроде бы некто не отменял. :-)
Записан
R_a_f_f
Гость
Re: ActiveQt and Word
«
Ответ #3 :
Ноябрь 23, 2007, 14:19 »
В этом то и загвоздочка!!! Не удаётся получить Range документа. Ругается что у Word.Application нет такого метода и предлагает выбрать из списка кандитатов. Точно такая же ситуация и с VisualBasic: Записываю макрос
Код:
Selection.TypeText Text = "123456"
. Пробую этот макрос запрограммировать, но не получается. Ругается что у Word.Application нет такого метода и предлагает выбрать из списка кандитатов. Это же подтверждается(что нет такого метода) при использование dumpdoc word.application. Создаётся файл со списком доступных свойств, мотодов, функций в которм Range отсутствует. Тут пришла мыслишка в голову, может быть это всё из-за того что установлен пакет OFICCE 2007?
Записан
Tonal
Гость
Re: ActiveQt and Word
«
Ответ #4 :
Ноябрь 24, 2007, 18:36 »
Я же написал
для документа
а не для приложения.
Внимательнее нужно быть и всё получится! :-)
Записан
R_a_f_f
Гость
Re: ActiveQt and Word
«
Ответ #5 :
Ноябрь 25, 2007, 18:50 »
Проблема решена!!! На самом деле есть несоответствия в том какие команды использует Visual Basic и какие необходимо использовать при работе в Qt. Доберусь до работы попробую выложить, думаю многим пригодится. Всем спасибо.
Записан
R_a_f_f
Гость
Re: ActiveQt and Word
«
Ответ #6 :
Ноябрь 28, 2007, 15:59 »
Как и обещал выкладываю код для работы с Microsoft Word:
Код:
QAxObject* WordApplication=new QAxObject("Word.Application"); // Создаю интерфейс к MSWord
QAxObject* WordDocuments = WordApplication->querySubObject( "Documents()" ); // Получаю интерфейсы к его подобъекту "коллекция открытых документов":
WordDocuments->querySubObject( "Add()" ); // Создаю новый документ
// отключение грамматики
QAxObject* Grammatic = WordApplication->querySubObject("Options()");
Grammatic->setProperty("CheckSpellingAsYouType(bool)", false); // отключение грамматики
QAxObject* ActiveDocument = WordApplication->querySubObject("ActiveDocument()");
QAxObject* Range = ActiveDocument->querySubObject("Range()");
// создание таблицы
QAxObject* Tables = ActiveDocument->querySubObject("Tables()");
QAxObject* NewTable = Tables->querySubObject("Add(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior)", ActiveDocument->dynamicCall("Range()"), 4, 4, 1, 1);
// запись текста в ячейку
QAxObject* Cell = NewTable->querySubObject("Cell(Row, Column)", 1,1);
QAxObject* CellRange = Cell->querySubObject("Range()");
CellRange->dynamicCall("InsertAfter(Text)", "Это ячейка 1:1");
Возникла ещё одна проблема. При добавлении новой таблицы весь текст, который мы отправляли в Word до этого заменяется на эту новую таблицу. Каким же образом при использовании метода Tables.Add(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior) указать правильно Range?
Записан
Axel
Гость
Re: ActiveQt and Word
«
Ответ #7 :
Декабрь 06, 2007, 18:25 »
Здравствуйте всем!!!
R_a_f_f большое спасибо за пример...
У меня возникла проблема с поиском и заменой текста... нужна помощь
Записан
dushabest85
Гость
Re: ActiveQt and Word
«
Ответ #8 :
Август 08, 2010, 07:35 »
Доброго времени суток, возникла проблема. При добавлении новой таблицы весь текст, который мы отправляли в Word до этого заменяется на эту новую таблицу. Каким же образом при использовании метода Tables.Add(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior) указать правильно Range? Подскажите пожалуйста, ни где не могу найти как это сделать? Пробовал записать макросы в ворде, но там какая то ерунда, в qt так не работает...
Записан
CroCIV
Гость
Re: ActiveQt and Word
«
Ответ #9 :
Сентябрь 15, 2010, 15:46 »
Цитата: dushabest85 от Август 08, 2010, 07:35
Доброго времени суток, возникла проблема. При добавлении новой таблицы весь текст, который мы отправляли в Word до этого заменяется на эту новую таблицу. Каким же образом при использовании метода Tables.Add(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior) указать правильно Range? Подскажите пожалуйста, ни где не могу найти как это сделать? Пробовал записать макросы в ворде, но там какая то ерунда, в qt так не работает...
А что утебя передается в Range функции Tables.Add( ?
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...