:: Главная :: Решения :: Статьи :: Проект "Русский help" :: Файловый архив :: Фотоальбом :: Ссылки ::
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  


Форумы  :: FAQ FoxPro

Как мне вывести данные в существующий MS WORD документ
Дата: 20.04.05 19:44:32 ОтветитьЦитировать

Вопрос

Как мне вывести данные в существующий MS WORD документ?

Ответ

Вариантов решения данной проблемы много. В данном случае будет рассмотрен вариант решения через предварительно созданный файл шаблона (файл с расширение DOT)

Сначала необходимо создать документ (шаблон) MS Word в который впоследствии будут вставлены нужные данные. Этот документ следует сохранить как шаблон MS Word.

В те места, где предполагается вставлять значения следует вставить специальные объекты, которые называются "Поля".

Эти объекты вставляются через пункт меню Word "Вставка", подпункт "Поле". При выборе данного пункта меню в появившейся форме следует выбрать поле с именем "Quote". Это поле относится к категории "Связи и ссылки". Введите в свойстве поля "Текст" какой-либо текст (он будет заменен при заполнении из FoxPro), установите, если надо, формат данных и нажмите кнопку "Ok".

Поле будет вставлено в документ MS Word, однако по умолчанию этот факт никак не отображается. Чтобы наглядно увидеть вставленный объект выделите весь текст, нажмите на выделенном тексте правой клавишей мыши и выберите пункт открывшегося меню "Коды/Значения полей".

То же самое можно сделать через общие настройки MS Word. Пункт главного меню "Сервис" - подпункт "Параметры" - Закладка "Вид" - Раздел "Показывать" - птичка "Коды полей".

Чтобы внести изменения в код поля выделите его, нажмите правую кнопку мыши и выберите пункт открывшегося меню "Изменить поле".

Повторите вставку "Поля" во все места, где Вы предполагаете впоследствии подставить собственные данные.

Если Вы хотите сделать вставку в таблицы в MS Word, то в ячейках этих таблиц вообще ничего не надо вставлять.

Все. С предварительной подготовкой закончили. Сохраните полученный документ как шаблон MS Word и закройте его.

Программное наполнение такого предварительно созданного шаблона будет выглядеть примерно так:

* Создаем новый документ MS WORD на базе ранее созданного шаблона
LOCAL loWord, loDoc
loWord = CREATEOBJECT( 'WORD.APPLICATION')
loDoc=m.loWord.Documents.Add('Полный_путь_доступа'+'Имя_файла_шаблона.dot')
* Подставляем необходимые значения в поля
m.loDoc.Fields(число_порядковый_номер_поля).Result.text="Текст"
* Для заполнения данных таблиц WORD принцип такой
m.loDoc.Tables(число_порядковый_номер_таблицы).Cell(число_ряд,число_колонка).Range.Text="Текст"
* Делаем созданный документ видимым
m.loWord.Visible = .T.

Однако рассмотренный вариант имеет тот недостаток, что к созданным полям приходится обращаться по номерам. Это не всегда удобно. Было бы проще, если бы поля имели символьное обозначение. Поэтому, рассмотрим еще один вариант.

Также предварительно создаем файл шаблона, но в качестве вставляемых объектов будем использовать не "Поля", а "Поля формы". Для этого надо активизировать специальный ToolBar с именем "Формы" (Пункт главного меню "Вид" - "Панели инструментов" - "Формы").

Вставляем курсор на нужное место в шаблоне и нажимаем на панели инструментов "Формы" самую левую иконку с буквами "ab". В текущее место шаблона будет вставлен специальный объект "Поле формы".

Дважды щелкните левой клавишей мыши по "Полю формы" и откроется дополнительное окно свойств этого объекта. Сейчас нас интересует его свойство "Закладка". Это и будет то самое, символьное обозначение объекта, по которому к нему можно будет обратиться из программы.

Это обозначение (закладка) может быть любое. Единственное ограничение - оно должно быть уникально в пределах всего шаблона. Впрочем, за этим проследит сам Word.

Предположим, что Вы оставили закладку в значении по умолчанию "ТекстовоеПоле1". Тогда изменение его содержимого из программы будет иметь вид:

* Создаем новый документ MS WORD на базе ранее созданного шаблона
LOCAL loWord, loDoc
loWord = CREATEOBJECT( 'WORD.APPLICATION')
loDoc=m.loWord.Documents.Add('Полный_путь_доступа'+'Имя_файла_шаблона.dot')
* Подставляем необходимые значения в поля
IF TYPE([m.loDoc.FormFields("ТекстовоеПоле1")])="O"
m.loDoc.FormFields("ТекстовоеПоле1").Result="Новое значение"
ENDIF
* Делаем созданный документ видимым
m.loWord.Visible = .T.

К сожалению, такой синтаксис возможен только для Word 2000 или старше. Для младших версий Word придется по старинке обращаться через порядковый номер. Точнее, надо будет сканировать коллекцию FormFields на предмет поиска "Поля формы" со свойством Name = "ТекстовоеПоле1". Примерно так:

LOCAL lnI
FOR lnI=1 TO m.loDoc.FormFields.Count
IF m.loDoc.FormFields(m.lnI).Name == "ТекстовоеПоле1"
m.loDoc.FormFields(m.lnI).Result="Новое значение"
ENDIF
ENDFOR



Отредактировано (04.05.05 23:24)


------------------
Ratings: 0 negative/0 positive


Тема Просмотров Написано Написано
  Работа с другими программами из FoxPro (Word, Excel и т.п.) 15915 Владимир Максимов 01.03.05 21:53
  Как мне вывести данные в существующий MS WORD документ 19938 Владимир Максимов 20.04.05 19:44
  Как открыть файл в другом приложении 14354 Владимир Максимов 15.06.05 22:18
  Как узнать значение константы Word или Excel 10799 Владимир Максимов 18.09.05 11:24
  Как узнать какая команда Word или Excel выполняет нужное действие 11971 Владимир Максимов 18.09.05 11:34
  Как заполнить таблицу в MS Word 16017 Владимир Максимов 20.01.07 17:35


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 1 (Гостей: 1)

© 2006 Fox Club 
Яндекс.Метрика