Пример вывода данных из Access в Word

Источник: Accessoft

Иногда возникают ситуации, когда требуется автоматически внести данные в один из типовых документов: служебную записку, письмо, договор и т. д. Причем не всегда такие документы можно сформировать, используя отчеты Access. Например:

  • требуется сформировать договор, который, как правило, представляет собой довольно длинный текстовый документ, в который нужно вставить несколько чисел или строк - например даты.
  • нужно обеспечить возможность ручного редактирования текста документа. Например, существует стандартный шаблон документа, который пользователь должен иметь возможность редактировать. Если использовать отчет Access, то придется открывать пользователю доступ к исходному коду.
  • документ должен быть сохранен в виде текстового файла (отчет Access может быть только напечатан). Иногда бывают и такие условия.

Обычно вывод отчета в документ Word применяют, когда необходимо вручную корректировать данные отчета. Чаще всего, при этом создается шаблон документа и затем программно вставляется в нужные места текст. Это проще, чем полностью программно составлять весь документ, хотя возможно и такое.

Вообще, каждый документ Microsoft Word основан на шаблоне. Шаблон определяет основную структуру документа и содержит настройки документа, такие как элементы автотекста, шрифты, назначенные сочетания клавиш, макросы, меню, параметры страницы, форматирование и стили. В нашем же случае, необходимо просто создать макет отчета подобно тому как это делается в Access. Для этого создаем обычный документ Word, затем в меню Файл - Сохранить как  выбираем тип файла - Шаблон документа. В результате получим документ Word с расширением .dot - шаблон.

Для редактирования шаблона лучше его открывать не двойным щелчком, как обычный документ, а например, через контекстное меню: правой кнопкой - и выбрать пункт открыть. В противном случае при попытке сохранения придется повторно задавать формат документа - шаблон (.dot), иначе он будет сохранен как обычный документ Word (.doc).

В качестве примера создадим шаблон реквизитов заказчика. Оформить его можно например так: создать заголовок, затем таблицу, куда будут вставлены реквизиты. Вставлять данные лучше в таблицу, так как в этом случае если текст не влезет в ширину столбца, то столбец автоматически увеличится по высоте. А вот если вставлять текст просто в заданное место, то при аналогичной ситуации не умещаемые данные появятся с новой строки, что изменит макет шаблона.

А теперь собственно о технологии вставки текста в нужное место. Чтобы вставить текст, сначала нужно определить место, куда он должен вставляться. В данном примере это делается при помощи «Закладок» (смотрим в меню документа Word: Вставка - Закладка).

Закладка - это элемент документа, которому присвоено уникальное имя. Это имя можно использовать для последующих ссылок. Например, можно использовать закладку для определения текста, который необходимо проверить позже. Чтобы в следующий раз не искать данный текст во всем документе, можно перейти к нему с помощью диалогового окна Закладка.

В нашем случае закладками являются элементы шаблона, выделенные курсивом (смотрим в папку Dot). Создаются они очень просто:

  • Выделите элемент, которому следует назначить закладку - например курсивный текст Заказчик
  • В меню Вставка выберите команду Закладка
  • В поле Имя закладки введите или выберите нужное имя - в данном случае вводим имя «Заказчик». Имя закладки должно начинаться с буквы, в нем могут использоваться цифры, но не должно быть пробелов. Если потребуется разделить слова в имени закладки, можно использовать знак подчеркивания, например:  Главный_заказчик.
  • Нажмите кнопку Добавить.

В итоге получили закладку с именем «Заказчик». В принципе, можно было просто установить курсор в нужное место и вышесказанным образом создать закладку. Но тогда для просмотра, где какая закладка установлена в документе нужно будет через меню Вставка - Закладка выбрать имя закладки и нажать кнопку Перейти. Это неудобно, проще и нагляднее создать одноименный текст в документе.

Теперь осталось создать функцию, которая бы открывала созданный шаблон Word, вставляла бы туда вместо закладок нужный текст и сохраняла созданный документ под заданным именем. В прошлой статье уже рассказывалось о способах открытия документов Office. Осталось только выяснить, как обратиться к закладке. Делается это при помощи свойства документа Bookmarks.Item Например:

Bookmarks.Item("Заказчик").Range.Text = Nz(Заказчик, "")

Здесь идет обращение к закладке под именем Заказчик и при помощи ее свойства Text ей присваивается нужное значение - в данном случае содержимое одноименного поля  на форме. На случай, если в поле нет данных, применена функция Nz(Значение, Значение если Null).

Документ создается под именем инициалов заказчика, поэтому данное поле не должно быть пустым. Это реализовано при помощи свойства поля (см. конструктор таблиц) «Обязательное поле - Да». Кроме того, в приведенном примере так же реализована процедура поиска ранее созданного документа при помощи стандартной функции Dir. Если документ не найден, то создается новый документ Word на основе шаблона

Set app = New Word.Application
app.Visible = True
app.Documents.Add strPathDot

если же такой документ существует, то выводится соответствующее сообщение: «Документ с таким именем ранее уже был создан. Заменить его?» При выборе «Да» создается новый документ взамен старого, при выборе «Нет» открывается старый документ

Set app = CreateObject("Word.Application")
With app
      .Visible = True
      .Documents.Open strPathWord
End With


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=7898