Основы офисного программирования и документы Word



              


Работа с полями документа - часть 3


Public Sub FieldsAnalise() 'Анализирует характеристики полей активного документа Dim MyField As Field With ActiveDocument Debug.Print "Число полей - ", .Fields.Count For Each MyField In .Fields With MyField Debug.Print "Код поля - ", .Code, _ "Вид поля - ", .Kind, _ "Тип поля - ", .Type, _ "Результат поля - ", .Result End With Next MyField End With End Sub

Листинг 1.45.

(html, txt)

Приведем результаты отладочной печати для главного документа, имеющего обширную коллекцию полей разного типа:

Листинг 1.46.

(html, txt)

Большинство полей в этом документе это поля слияния (MergeField), значения которых берутся из источника данных в момент слияния главного документа с записями источника данных. Обратите внимание, ситуация с полями напоминает ситуацию с ячейками Excel, с одной стороны в ячейке содержится формула (в поле код поля), с другой стороны вычисленное по формуле значение (результат поля). По желанию всегда можно включить просмотр в полях либо кода поля, либо результата. По умолчанию, также как и для ячеек Excel, показывается результат поля. Свойство Kind, которое для всех полей нашего документа имеет одинаковое значение, указывает на то, как происходит автоматическое обновление значения поля, имеет ли поле результат.

Для программного создания полей используется, как обычно, метод Add коллекции Fields. Он имеет следующий синтаксис:

Листинг 1.47.

(html, txt)

Параметр Range определяет область документа, в которую вставляется поле, Type тип поля, из-за разнообразия типов этот параметр имеет около сотни различных значений. Параметр Text чаще всего используется в тех случаях, когда нужно задать переключатели, определяющие специфику работы поля. Последний параметр определяет, будет ли сохраняться форматирование при обновлении значения поля.

Рассмотрим теперь пример программного добавления полей в документ. Я ограничусь достаточно простой ситуацией. Добавим в начало документа три поля, задающие автора документа, дату и время:

Листинг 1.48.

(html, txt)

В этой процедуре добавляются три пустых абзаца в начало документа, а затем добавляются три поля. Затем демонстрируется еще один способ работы с полями, когда вначале задается пустое поле, а потом в нем печатается текст, определяющий это поле. Конечно, это должен быть разумный текст, определяющий тип поля и его характеристики. Так, зачастую, работают с полями вручную. Заметьте, необходимо обновить это поле, чтобы поле отражало значение результата. Печать результатов до обновления и после обновления позволяет проследить за изменениями значений полей. Приведем результаты отладки:

Листинг 1.49.

(html, txt)




Содержание  Назад  Вперед