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


Форумы  :: FAQ FoxPro

Как мне вывести данные в существующий MS WORD документ
Дата: 20.04.05 18: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 и т.п.) 14643 Владимир Максимов 01.03.05 20:53
  Как мне вывести данные в существующий MS WORD документ 17272 Владимир Максимов 20.04.05 18:44
  Как открыть файл в другом приложении 13230 Владимир Максимов 15.06.05 21:18
  Как узнать значение константы Word или Excel 9519 Владимир Максимов 18.09.05 10:24
  Как узнать какая команда Word или Excel выполняет нужное действие 10628 Владимир Максимов 18.09.05 10:34
  Как заполнить таблицу в MS Word 14616 Владимир Максимов 20.01.07 16:35


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

On-line: 47 and Guests: 47


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