C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Работа с MS Word и FormFields
DiSyA
Отправлено: 27.10.2006, 15:50


Ученик-кочегар

Группа: Участник
Сообщений: 7



Доброго времени суток!
Имеется проблема, решение которой не удалось найти.
Надо сделать так, что при нажатии на кнопку открывался вордовый документ на основе шаблона и в нужных местах должен стоять нужный текст.

Открыть докумен на основе шаблона получается, а вот дальше болт... Выяснил, что надо использовать FormFields, т.е.
WordApplication1->ActiveDocument->FormFields->Item((TVariant)"MyField")->Result=(TVariant)"hi";
ну либо
WordDocument1->FormFields->Item((TVariant)"MyField")->Range->Text=(TVariant)"qqq"; должно работать... По крайней мере все примеры, которые я видел в нете для дельфей и ВБ ведут к чему-то такому. Но у меня билдер, пишет

[C++ Error] Unit1.cpp(560): E2247 'FormField::Result' is not accessible

ну или [C++ Error] Unit1.cpp(560): E2247 'Range::Text' is not accessible.

Мож я чего не так понимаю... Подскажите как это можно сделать, а то мозги уже набекрень, не знаю куда кидаться...
AVC
Отправлено: 27.10.2006, 16:21


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE (DiSyA @ 27.10.2006, 15:50)
Надо сделать так, что при нажатии на кнопку открывался вордовый документ на основе шаблона и в нужных местах должен стоять нужный текст.

В свое время решил проблему расстановкой в шаблоне текста документа специальных меток а при создании документа по шаблону — поиск и замена.
gvg
Отправлено: 27.10.2006, 16:39


Машинист паровоза

Группа: Участник
Сообщений: 222



QUOTE (AVC @ 27.10.2006, 17:21)
В свое время решил проблему расстановкой в шаблоне текста документа специальных меток а при создании документа по шаблону — поиск и замена.

Аналогично. Как-то выкладывал исходники поиска/замены полей, в т.ч. в колонтитулах.
Nelly
Отправлено: 15.11.2006, 16:54


Ученик-кочегар

Группа: Участник
Сообщений: 6



Может мой ответ и запоздалый, но я тоже долго искала информацию по этому вопросу, вот, что удалось найти:
6. Работа с Word
Добавить на форму компонент WordApplication (Office2K)

WordApplication1->Connect();// соединение
WordApplication1->GetDefaultInterface()->Visible = true;//визуализация ворда
WordApplication1->Documents->Add();//создание нового документа
***
Открытие документа по шаблону (Создаётся новый документ со свойствами и содержанием шаблона, шаблон не изменяется и пользователю не виден)

TVariant Template = "С:\Proba.doc";- путь к шаблону
WordApplication1->Connect();
WordApplication1->GetDefaultInterface()->Visible = true;
WordApplication1->Documents->Add(&Template, EmptyParam);

***
Вставка текста с того места где в шаблоне был курсор
WordApplication1->Selection->TypeText(WideString("My text"));

***
Вставка текста в определённое место:
1. В ворде, т е в документе-шаблоне нужно выделить слова, вместо которых будут вставляться значения и выбрать Вставка->Закладка. Добавить закладку, назвав её, например, metka
2. Код программы
TVariant ovWhat = wdGoToBookmark;
TVariant Bookmark = "metka";
WordApplication1->Selection->GoTo(&ovWhat, EmptyParam, EmptyParam, &Bookmark);
WordApplication1->Selection->TypeText(WideString("Иванов"));

Вернуться в Вопросы программирования в C++Builder