Средства разработки приложений


Документация на основе RTF-шаблона


Александр Харьков,

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

До последнего времени самым простым и широко применяемым решением представлялось применение механизма OLE. Например, для комбинации Word и VisualBasic возможна такая схема:

  • Создаем некий файл - шаблон документа. Там, где должна быть "шапка" (дата, номер документа и др.), используем закладки, а для основной части отчета создаем таблицу-заготовку соответствующей структуры. Пример такого шаблона приведен на рис. 1.
  • Пишем программу с использованием объектной модели Word:

' NumStr - кол-во строк в отчете
' NewData (5,NumStr) - массив с данными для заполнения
' таблицы, заранее приведенными к символьному виду
' Itog - сумма, приведенная к символьному виду
' Pth - путь к исходному файлу
' Str_ndoc = "BS190"
' Str_name = "Петров И.И."
.................

Dim objWord As Word.Application
Dim objDoc As Word.Document
Dim objTable As Word.Table

' создаем объект Word
Set objWord = New Word.Application
' делаем его видимым - это не обязательно,
' но очень интересно :)
objWord.Visible = True

' открываем файл шаблона
Set objDoc = objWord.Documents.Open (Pth)
' делаем его активным
objDoc.Activate

' заполняем "шапку документа" - номер и получатель
' - закладки 'ndoc' и 'name' соответственно
objDoc.Bookmarks ("ndoc").Range.Text = Str_ndoc
objDoc.Bookmarks ("name").Range.Text = Str_name

' связывам объект с таблицей
Set objTable = objWord.ActiveDocument.Tables (1)

' выделяем 2-ю строку таблицы в шаблоне



Начало    Вперед



Книжный магазин