Как сделать договор в access?

Господа юристы, а что если попробовать самим создать, к примеру, базу для ведения договоров, такую какую удобно нам (а получиться и для реестра акций напишем ).
Я думаю необходимым минимумом компьютерной грамотности здесь обладают практически все.
Выкладываю свой первый вариант, созданный в Access. Избрал его по следующим причинам: есть практически у всех, прост в использовании, легко поменять все что угодно под себя.

Причины побудившие меня к этому — попробовал бесплатные программы, и ни одна не устроила, прежде всего потому, что трудно перенастроить для конкретной организации (у меня к примеру ведутся договора 4 организаций).

ИМХО основные достоинства моего варианта: легко все перенастроить, документы и скан-версии подписанных документов внедряются в базу, возможно добавить (с вашей помощью ) большое кол-во новых функций, удобные в использовании фильтры Access (прежде всего фильтр по выделенному) и др.

Будет здорово если кто-то, разбирающийся в Access лучше меня что-нибудь подправит.

Интерфейс спорный , но на то и Access, что бы сделать все как захочется.

Возникнут вопросы, пишите.

Сообщение отредактировал Юрий НН: 13 Май 2005 — 19:17

Многие пользователи активно применяют Excel для генерирования отчетов, их последующей редакции. Для удобного просмотра информации и получения полного контроля при управлении данными в процессе работы с программой.

Внешний вид рабочей области программы – таблица. А реляционная база данных структурирует информацию в строки и столбцы. Несмотря на то что стандартный пакет MS Office имеет отдельное приложение для создания и ведения баз данных – Microsoft Access, пользователи активно используют Microsoft Excel для этих же целей. Ведь возможности программы позволяют: сортировать; форматировать; фильтровать; редактировать; систематизировать и структурировать информацию.

То есть все то, что необходимо для работы с базами данных. Единственный нюанс: программа Excel — это универсальный аналитический инструмент, который больше подходит для сложных расчетов, вычислений, сортировки и даже для сохранения структурированных данных, но в небольших объемах (не более миллиона записей в одной таблице, у версии 2010-го года выпуска ).

Структура базы данных – таблица Excel

База данных – набор данных, распределенных по строкам и столбцам для удобного поиска, систематизации и редактирования. Как сделать базу данных в Excel?

Вся информация в базе данных содержится в записях и полях.

Запись – строка в базе данных (БД), включающая информацию об одном объекте.

Поле – столбец в БД, содержащий однотипные данные обо всех объектах.

Записи и поля БД соответствуют строкам и столбцам стандартной таблицы Microsoft Excel.

Если Вы умеете делать простые таблицы, то создать БД не составит труда.

Создание базы данных в Excel: пошаговая инструкция

Пошаговое создание базы данных в Excel. Перед нами стоит задача – сформировать клиентскую БД. За несколько лет работы у компании появилось несколько десятков постоянных клиентов. Необходимо отслеживать сроки договоров, направления сотрудничества. Знать контактных лиц, данные для связи и т.п.

Как создать базу данных клиентов в Excel:

  1. Вводим названия полей БД (заголовки столбцов).
  2. Вводим данные в поля БД. Следим за форматом ячеек. Если числа – то числа во всем столбце. Данные вводятся так же, как и в обычной таблице. Если данные в какой-то ячейке – итог действий со значениями других ячеек, то заносим формулу.
  3. Чтобы пользоваться БД, обращаемся к инструментам вкладки «Данные».
  4. Присвоим БД имя. Выделяем диапазон с данными – от первой ячейки до последней. Правая кнопка мыши – имя диапазона. Даем любое имя. В примере – БД1. Проверяем, чтобы диапазон был правильным.

Основная работа – внесение информации в БД – выполнена. Чтобы этой информацией было удобно пользоваться, необходимо выделить нужное, отфильтровать, отсортировать данные.

Как вести базу клиентов в Excel

Чтобы упростить поиск данных в базе, упорядочим их. Для этой цели подойдет инструмент «Сортировка».

  1. Выделяем тот диапазон, который нужно отсортировать. Для целей нашей выдуманной компании – столбец «Дата заключения договора». Вызываем инструмент «Сортировка».
  2. При нажатии система предлагает автоматически расширить выделенный диапазон. Соглашаемся. Если мы отсортируем данные только одного столбца, остальные оставим на месте, то информация станет неправильной. Открывается меню, где мы должны выбрать параметры и значения сортировки.

Данные в таблице распределились по сроку заключения договора.

Теперь менеджер видит, с кем пора перезаключить договор. А с какими компаниями продолжаем сотрудничество.

БД в процессе деятельности фирмы разрастается до невероятных размеров. Найти нужную информацию становится все сложнее. Чтобы отыскать конкретный текст или цифры, можно воспользоваться одним из следующих способов:

  1. Одновременным нажатием кнопок Ctrl + F или Shift + F5. Появится окно поиска «Найти и заменить».
  2. Функцией «Найти и выделить» («биноклем») в главном меню.

Посредством фильтрации данных программа прячет всю не интересующую пользователя информацию. Данные остаются в таблице, но невидимы. В любой момент их можно восстановить.

В программе Excel чаще всего применяются 2 фильтра:

  • Автофильтр;
  • фильтр по выделенному диапазону.

Автофильтр предлагает пользователю выбрать параметр фильтрации из готового списка.

  1. На вкладке «Данные» нажимаем кнопку «Фильтр».
  2. После нажатия в шапке таблицы появляются стрелки вниз. Они сигнализируют о включении «Автофильтра».
  3. Чтобы выбрать значение фильтра, щелкаем по стрелке нужного столбца. В раскрывающемся списке появляется все содержимое поля. Если хотим спрятать какие-то элементы, сбрасываем птички напротив их.
  4. Жмем «ОК». В примере мы скроем клиентов, с которыми заключали договоры в прошлом и текущем году.
  5. Чтобы задать условие для фильтрации поля типа «больше», «меньше», «равно» и т.п. числа, в списке фильтра нужно выбрать команду «Числовые фильтры».
  6. Если мы хотим видеть в таблице клиентов, с которыми заключили договор на 3 и более лет, вводим соответствующие значения в меню пользовательского автофильтра.

Готово!

Поэкспериментируем с фильтрацией данных по выделенным ячейкам. Допустим, нам нужно оставить в таблице только те компании, которые работают в Беларуси.

  1. Выделяем те данные, информация о которых должна остаться в базе видной. В нашем случае находим в столбце страна – «РБ». Щелкаем по ячейке правой кнопкой мыши.
  2. Выполняем последовательно команду: «фильтр – фильтр по значению выделенной ячейки». Готово.

Если в БД содержится финансовая информация, можно найти сумму по разным параметрам:

  • сумма (суммировать данные);
  • счет (подсчитать число ячеек с числовыми данными);
  • среднее значение (подсчитать среднее арифметическое);
  • максимальные и минимальные значения в выделенном диапазоне;
  • произведение (результат умножения данных);
  • стандартное отклонение и дисперсия по выборке.

Порядок работы с финансовой информацией в БД:

  1. Выделить диапазон БД. Переходим на вкладку «Данные» — «Промежуточные итоги».
  2. В открывшемся диалоге выбираем параметры вычислений.

Инструменты на вкладке «Данные» позволяют сегментировать БД. Сгруппировать информацию с точки зрения актуальности для целей фирмы. Выделение групп покупателей услуг и товаров поможет маркетинговому продвижению продукта.

Готовые образцы шаблонов для ведения клиентской базы по сегментам.

  1. Шаблон для менеджера, позволяющий контролировать результат обзвона клиентов. Скачать шаблон для клиентской базы Excel. Образец:
  2. Простейший шаблон.Клиентская база в Excel скачать бесплатно. Образец:

Шаблоны можно подстраивать «под себя», сокращать, расширять и редактировать.

Многим из отечественных пользователей известно, какой в свое время переполох поднялся из-за видоизмененного интерфейса MS Office 2007, и чем только не поливали его разработчиков! «Гуру» сетовали на то, что новый офисный пакет стал «неудобным и странным», а потому уверенно предрекали ему скорую кончину и полное забвение пользователей.

Зря! Так как ничего подобного не произошло, напротив, вскорости выяснилось, что пользоваться новой версией «Офиса» стало намного проще и удобнее.

А потому (как и ожидалось) все изменения, предпосылки для которых были созданы еще в «Офисе 2007», не только успешно перекочевали в его новую ипостась, но и получили вполне логичное свое развитие. Именно поэтому версия 2010 года стала чрезвычайно популярной в среде профессиональных пользователей.

Изменения в новой версии Access

Весьма существенные изменения коснулись и знаменитого приложения для создания баз данных. Посредством нового компонента Sparklines можно создавать и редактировать огромные массивы информации. А благодаря инструменту Slicer появилась возможность простой и быстрой навигации даже в огромных базах. А все благодаря качественно продуманным и настроенным системам фильтрации.

Кроме того, разработчики добавили лучшую интеграцию с Excel, прямо из которого можно импортировать большие массивы информации. Впрочем, начинающие пользователи куда чаще задаются вопросом о том, как создать базу данных в Access.

Что это такое

Чтобы правильно создавать базы, необходимо предварительно разобраться в их сути. Базой данных называется строго организованная структура, предназначенная для хранения и упорядочивания информации. Она может содержать чрезвычайно разнообразные объекты, но логической их единицей является таблица.

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

Какие операции можно выполнять при помощи MS Access?

Не следует полагать, что данное приложение является неким «логическим продолжением» Excel. Возможности рассматриваемой программы куда шире. В частности, любое создание базы данных MS Access предполагает тщательное продумывание информационной структуры конкретного документа, проверку целостности исходных данных, а также использование этих сведений для моделирования запросов, форм и отчетов.

Пример создания

Так как создать базу данных в Access можно и при помощи «Мастера», упрощающего работу для начинающих пользователей, сам процесс особенной сложностью не отличается. Но мы бы не рекомендовали идти этим путем, так как для продуктивной работы следует понимать все происходящие процессы.

Сперва запустите приложение. На мониторе появится диалог создания нового документа. В нем вам следует выбрать пункт «Новая база данных». В поле «Имя файла» вводится осмысленное её. Избегайте повторяющихся и ничего не значащих имен: в результате какой-либо ошибки или собственной невнимательности вы легко можете потерять важные сведения.

После этого нажимается кнопка «Создать». Сразу после этого на мониторе появится диалоговое окно создания новой информационной таблицы, на основании которой вы и будете создавать свой проект.

Какой режим выбрать?

Таблицу можно монтировать в нескольких режимах, но мы бы посоветовали «Конструктор», так как в нем проще контролировать весь процесс и лучше представлять себе всю внутреннюю структуру документа.

Чтобы перейти к нему, воспользуйтесь переходом «Вид-Конструктор». После этого можно вводить требуемое имя конкретной таблицы. Так как их может потребоваться сразу несколько, рекомендуем опять-таки пользоваться какими-то осмысленными наименованиями.

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

Для этого следует воспользоваться командой «Вид-режим таблицы». Обратите внимание! Если в поле «Код предмета» в вашем случае стоит значение «Счетчик», то заполнять конкретное поле не нужно. Когда вы закончите работу по внесению информации, ее можно закрывать. В случае если конкретная база данных нуждается во второй таблице, ее монтируют командой «Создание-Конструктор таблиц».

Примеры баз

Все вышесказанное было бы пустым звуком без предоставления вам сведений из «полевого опыта», в которых пригодились базы данных Access. Примеры в этой области можно обсуждать чуть ли не бесконечно, но мы остановимся на варианте, который может серьезно облегчить прохождение учебного процесса.

Кратко опишем создание документа по учебному плану. Что потребуется в него включить? Сюда должны входить следующие поля: код специальности, номер группы, предмет и преподаватели. Обратите внимание: поля «Предмет» и «Преподаватель» должны быть связаны с дополнительными таблицами, из которых программа будет черпать соответствующую информацию.

Как это делается?

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

В «Группе» и аналогичных строках тип поля обозначаете как «Текст». А вот в полях «Предмет» и «Преподаватель» следует выбирать «Мастер подстановок». Не беспокойтесь: сразу после выбора этого значения, программа покажет вам диалоговое окно. Следуя его инструкциям, вы сможете создать связь с другими таблицами. Как вы понимаете, их следует создавать заранее.

Как только вы нажмете на кнопку «Готово», перед вами появится предупреждение о том, что для создания связи необходимо сохранить таблицу. Подтверждаете выполнение этого действия.

Создание связей между таблицами

Мы уже говорили о том, что работа с базой данных Access предполагает наличие связей сразу между несколькими электронными таблицами. Так как их создавать?

Для этого откройте нужный вам документ, после чего пройдите по пути «Работа с базами данных — Схема данных». Чтобы определить и задать характер связи, необходимо выполнить двойной щелчок левой клавишей мыши в диалоговом окне «Изменение связей». После этого следует нажать на кнопку «ОК». В результате вы зададите стандартный параметр «Один ко многим».

Вот мы и рассмотрели вопрос о том, как создать базу данных в Access. Надеемся, информация будет вам полезной.

Господа юристы, а что если попробовать самим создать, к примеру, базу для ведения договоров, такую какую удобно нам (а получиться и для реестра акций напишем ).
Я думаю необходимым минимумом компьютерной грамотности здесь обладают практически все.
Выкладываю свой первый вариант, созданный в Access. Избрал его по следующим причинам: есть практически у всех, прост в использовании, легко поменять все что угодно под себя.

Причины побудившие меня к этому — попробовал бесплатные программы, и ни одна не устроила, прежде всего потому, что трудно перенастроить для конкретной организации (у меня к примеру ведутся договора 4 организаций).

ИМХО основные достоинства моего варианта: легко все перенастроить, документы и скан-версии подписанных документов внедряются в базу, возможно добавить (с вашей помощью ) большое кол-во новых функций, удобные в использовании фильтры Access (прежде всего фильтр по выделенному) и др.

Будет здорово если кто-то, разбирающийся в Access лучше меня что-нибудь подправит.

Интерфейс спорный , но на то и Access, что бы сделать все как захочется.

Возникнут вопросы, пишите.

Сообщение отредактировал Юрий НН: 13 Май 2005 — 19:17

В настоящем разделе будут рассмотрены несколько примеров управления объектами Microsoft Word из процедур VBA: открытие и печать документа, слияние документов для почтовых рассылок и заполнение полей в документе Word данными из БД Microsoft Access.

Иерархия объектов VBA приложения Microsoft Word

Так же как и при использовании объектной модели Microsoft Excel, познакомимся сначала с некоторыми объектами объектной модели Microsoft Word.

  • Объект Application — ссылается на активное приложение Microsoft Word. Через этот объект можно получить доступ ко всем остальным объектам модели. Объект Application имеет свойства ActiveDocument и ActiveWindow, которые представляют собой активный документ и активное окно соответственно. Можно указать Word.Application в качестве значения аргумента функций CreateObject() и GetObject() И В операторе Dim As New .
  • Объект Document — является глобальным объектом и, так же как и объект Application, может использоваться в коде автоматизации в качестве значения аргумента функций CreateObject() и GetObject() и в операторе Dim As New . Семейство Documents представляет собой набор всех документов, открытых в Word.
  • Объект Selection — представляет собой выделенную область в окне документа Word или точку вставки. Каждый документ может иметь только одну область выделения, и только одна область выделения открытых документов может быть активна в некоторый момент времени. Это означает, что всегда существует только один объект Selection. Объект Selection подчинен объекту Application, a создается при применении метода Select к объекту Document.
  • Семейство windows объекта Application представляет собой набор всех окон приложения Word.
  • Семейство Bookmarks подчинено объекту Document, и каждый объект этого семейства представляет собой закладку в документе.
  • Объект Range представляет собой непрерывную область текста в документе Word. Диапазоны, как и закладки, используются для идентификации текста в документе, однако, в отличие от закладок, диапазоны существуют только во время выполнения процедур VBA. Диапазоны не зависят от области выделения в документе. Можно работать с диапазоном, не затрагивая области выделения. Диапазонов в документе может быть несколько.

Открытие документа Word

Для того чтобы открыть документ Word, можно использовать любой из перечисленных ранее способов создания экземпляров класса объекта автоматизации. Ниже приводятся примеры процедур VBA для открытия документа. В первой используется функция CreateObject (), а во второй — GetObject(). Для проверки кода этих процедур вы можете, так же как и при работе с объектами приложения Excel, использовать окно отладки.

Sub OpenDocument() Dim wda As Word.Application Set wda = CreateObject("Word.Application") With wda .Visible = True .Documents.Open "C:DocLetter.doc" End With 'операции над документом wda.Quit Wda.Nothing End Sub 

В данном случае независимо от того, запущен ли уже Word, программа запустит еще один его экземпляр и в нем откроет файл Letter.doc. После того как все операции с документом закончены, нужно закрыть Word, для чего используйте метод Quit. Если при этом документ был изменен, то приложение Word выдаст сообщение, спрашивающее о том, нужно ли сохранить изменения. При этом программа приостанавливает выполнение и ждет указания пользователя. Таких ситуаций следует избегать.

Если все изменения делались программно, то лучше сначала закрыть документ, выполнив команду

wda.ActiveDocuments.Close False

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

В следующей процедуре для открытия документа используется функция Getobject (). То есть сначала делается попытка проверить, не запущен ли уже Word. Если он еще не запущен, будет сгенерирована ошибка (код ошибки: 429). Программа перехватит эту ошибку и использует функцию CreateObject(), чтобы запустить Word. Если Word уже запущен, то новый документ будет открыт в этом же экземпляре приложения. Затем документ выводится на печать, после чего закрывается либо документ, либо приложение в зависимости от значения флага (modeFlag). Значение флага показывает, запускался ли экземпляр Word, или документ был добавлен к другим открытым документам:

Sub OpenPrintDocument() Dim wda As Word.Application Dim modeFlag As Boolean On Error GoTo ErrStartWord modeFlag = True 'устанавливаем флаг операции Set wda = GetObjectf, "Word.Application") With wda .Visible = True .Documents.Open "C:DocLetter.doc" .ActiveDocument.Printout Do While .BackgroundPrintingStatus  0 DoEvents "ждем, пока документ напечатается Loop If modeFlag Then .ActiveDocument.Close 'закрываем только документ Else .Quit 'закрываем все приложение End If End With Set wda = Nothing Exit Sub ErrStartWord: If Err.Number = 429 Then ' Word не запущен Set wda = CreateObject("Word.Application") modeFlag = False 'сбрасываем флаг Resume Next 'возвращаемся к оператору, следующему за 'тем, который вызвал ошибку Else 'выдаем диалоговое окно с сообщением и номером ошибки MsgBox Err.Description & " " & Err.Number, vblnformation Exit Sub ' выходим из процедуры End If End Sub 

Вывод данных из таблицы Access в документ Word

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

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

В качестве примера рассмотрим документ Word, который находится в файле Contract.doc на компакт-диске. Документ представляет собой текст договора и содержит несколько полей формы, которые должны быть заполнены данными из таблицы Access. (Подробно о полях формы можно пропитать, например, в кн.: Ф. Новиков, А. Яценко. Microsoft Office 2000 в целом. «БХВ—Санкт-Петербург», 1999.) Откройте этот файл, запустив Word. На рис. 15.32 показаны начало документа и поля, которые должны быть заполнены. Кроме того, представлена стандартная панель инструментов Формы (Forms), с помощью которой эти поля были созданы.

Замечание

Чтобы вывести на экран эту панель инструментов, щелкните правой кнопкой мыши в области панелей инструментов и выберите из списка элемент Формы (Forms).

Чтобы вставить такое поле в документ, нужно:

  1. Установить курсор (точку ввода) в то место, где должно начинаться поле, и нажать кнопку Текстовое поле (Text Form Field). Поле будет вставлено в документ в точке ввода.
  2. Дважды щелкнуть на этом поле. Откроется диалоговое окно Параметры текстового поля (Text Form Field Options), в котором требуется заполнить, по крайней мере, одно поле: Закладка (Bookmark).
  3. Ввести имя закладки и нажать кнопку ОК.

Рис. 15.32. Документ Word, содержащий поля для вставки

Рассмотрим программу, которая открывает файл Contract.doc и автоматически заполняет поля договора. Такая программа может быть связана, например, с кнопкой в форме «Заказы клиентов» (Customer Orders) и обрабатывает нажатие данной кнопки. При нажатии на кнопку должен сформироваться договор с тем клиентом, который отображается в текущей записи формы. Для простоты будем считать, что номер договора будет равен номеру текущего заказа (выделенного в подчиненной форме).

Private Sub CreateContract_Click() Dim wda As Word.Application Dim wdd As Word.Document Dim intPrint As Integer On Error GoTo ErrStartWord Set wdd = GetObject("C:DocContract.doc") Set wda = wdd.Parent wda.Visible = True wdd.Bookmarks("ContractNumber").Select wda.Selection.TypeText Text:=.Form! wdd.Bookmarks("ContractDate").Select With wda .Selection.TypeText Text:=Date .Selection.GoTo Name:="CustemerName" .Selection.TypeText Text:= .Selection.GoTo Name:="CustomerAddress" .Selection.TypeText Text:= ' заполнение остальных полей intPrint = MsgBox("Печатать договор?", vbYesNo + vbQuestion) If intPrint = vbYes Then wdd.Printout Do While .BackgroundPrintingStatus  0 DoEvents Loop End If .ActiveDocument.Close False If .Windows.Count = 0 Then .Quit End If End With Set wdd = Nothing Set wda = Nothing Exit Sub ErrStartWord: MsgBox Err.Description & " " & Err.Number, vblnformation Exit Sub End Sub 

В данной программе с помощью функции Getobject() создается объект Document. Если при этом Word не запущен, то одновременно создается скрытый экземпляр объекта Application Word. Если Word уже запущен, то новый документ добавляется к уже открытым документам.

Далее показаны два способа нахождения нужной закладки в документе. В первом случае используется семейство Bookmarks. Вызвав метод Select нужного элемента этого семейства, можно создать объект Selection, а в документе при этом выделяется требуемое поле.

Во втором случае к объекту Selection (вспомните, что он может означать не только выделенную область, но и точку ввода) применяется метод Goto, которому в качестве значения аргумента Name передается имя нужной закладки.

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

Потом документ закрывается и далее проверяется, открыты ли еще какие-либо документы (используется свойство Count семейства windows). Если других открытых документов нет, то приложение тоже закрывается. В конце процедуры освобождаются обе объектные переменные.

Если в организации отсутствует приложение Access для автоматизации различных деловых процедур, то создавать типовые бланки документов можно более простыми средствами, например, умело используя средства самого редактора Microsoft Word. Однако, когда такое приложение имеется и в базе данных Access хранится большинство нужной информации, было бы просто нерационально вводить вручную в текст документа значения полей. Рассмотренный пример объясняет, как можно этого избежать.

Слияние документов для почтовых рассылок

Следующий пример связан с эффектным решением еще одной типовой задачи — созданием серийных документов. Это могут быть письма с одинаковым содержанием, но адресованные разным лицам, или типовые бланки, которые должны оформляться в большом количестве. Задача сводится к тому, что должны существовать шаблон такого документа и некоторая база данных. Требуется создать необходимое количество экземпляров такого документа, вставив в каждый экземпляр существующие данные. Если источником данных является таблица Access или запрос, задача решается просто — достаточно выделить эту таблицу (запрос) в списке в окне базы данных и выполнить команду меню Сервис, Связи с Office, Слияние с MS Word (Tools, Office Links, Merge it With MS Word). Однако может оказаться, что данные для вставки в бланк или письмо определяются достаточно сложно, например представляют собой набор записей — Recordset. Тогда можно создать все бланки программно.

Сейчас мы создадим приглашение сотрудникам фирмы «Борей» на некоторое мероприятие. Мероприятие торжественное и важное, поэтому мы хотим напечатать приглашение на красивом бланке.

Рис. 15.33. Шаблон документа для слияния с данными из Access

Шаблон документа должен быть приготовлен заранее. Рассмотрим, как это можно сделать.

  1. Создайте красивый бланк, пользуясь средством Microsoft Clip Gallery или любой другой библиотекой картинок, рамочек и т. д. (Можно использовать шаблон, присутствующий на компакт-диске, — файл Приглашение.dot). Это будет основной документ для слияния.
  2. Теперь нужно установить связь с источником данных. В программе мы будем использовать в качестве источника данных временную таблицу Access, т. е. таблицу, которая существует только при работе процедуры VBA. Однако для установления связи нужно создать такую таблицу в базе данных. Создайте новую таблицу и определите следующие поля таблицы: «Фамилия», «Имя», «Обращение», «Должность». Назовите ее «СписокПриглашенных».
  3. Откройте файл Приглашение-dot и выполните команду меню Сервис, Письма и рассылки, Мастер слияния (Tools, Letters and Mailing, Mail Merge Wizard). Будет запущен Мастер слияния, который в новой версии Microsoft Word реализован в виде панели задач, расположенной слева на экране (рис. 15.34)

Рис. 15.34. Панель Мастера слияния

  1. Далее следуйте указаниям мастера. На первом шаге выберите тип документа — Письма (Letter) и нажмите кнопку Далее (Next), чтобы перейти к следующему шагу.
  2. На втором шаге выберите переключатель Текущий документ (Use The current document).
  3. На третьем шаге нужно указать источник данных. Оставьте значение поля Выбор получателей (Select Recipient) по умолчанию — Использование списка (Use an existing List) и нажмите на ссылку Обзор (Browse). Появится стандартное диалоговое окно для выбора файла.
  4. Найдите в этом окне файл «Борей.MDB» и нажмите кнопку Открыть (Open). Появится диалоговое окно со списком таблиц.
  5. Выберите в нем таблицу «СписокПриглашенных». Появится диалоговое окно, в котором будет отображено содержимое исходной таблицы (рис. 15.35). Закройте это окно.

Рис. 15.35. Диалоговое окно с содержимым таблицы «СписокПриглашенных»

  1. Теперь на экране отображается панель инструментов Слияние (Mail Merge). Установите курсор в левый верхний угол документа и нажмите кнопку Добавить поля слияния (Insert Merge Fields). Появляется одноименное диалоговое окно со списком всех полей в источнике данных. Выберите в списке поле «Обращение» и нажмите кнопку Вставить (Insert). Аналогично вставьте остальные поля (см. рис. 15.34). Поля слияния являются одним из видов полей Word и выглядят в основном документе как заключенные в угловые кавычки названия соответствующих полей источника данных.
  2. Сохраните документ в виде шаблона (файл с расширением dot) и закройте.

Рассмотрим теперь программу, которая будет выполнять слияние документа Word с данными из таблицы Access. В этой программе мы покажем, как объект Document создается из шаблона документа. Предположим, что у нас есть форма, в которой отображаются отобранные записи о тех сотрудниках, которым мы хотим разослать приглашения. На форме есть кнопка, при нажатии на которую должны формироваться и печататься все экземпляры приглашений. Процедура обработки нажатия этой кнопки выглядит следующим образом:

 Private Sub MergeDocument_Click() Dim wda As Word.Application Dim rst As Recordset, rstNew As Recordset Dim db As Database Dim tdf As TableDef Dim i As Integer Set db = CurrentDb() ' Создаем новую таблицу Set tdf = db.CreateTableDef("СписокПриглашенных") With tdf ' Создаем поля таблицы и добавляем их в семейство Fields .Fields.Append .CreateField("Фамилия", dbText) .Fields.Append . CreateFieldC'HMH", dbText) .Fields.Append .CreateField("Обращение", dbText) .FieIds.Append .CreateField("Должность", dbText) ' Добавляем таблицу в семейство TableDefs db.TableDefs.Append tdf End With ' копируем записи из формы в созданную таблицу Set rst = Me.RecordsetClone rst.MoveFirst Set rstNew = db.OpenRecordset("СписокПриглашенных") Do While Not rst.EOF rstNew.AddNew For i = 0 To rst.Fields.Count - 1 rstNew.Fields(i) = rst.Fields(i) Next i rstNew.Update rst.MoveNext Loop ' создаем объект Application Word On Error GoTo err_StartWord Set wda = GetObject(, "Word.Application") wda.Visible = True ' открываем документ на основе шаблона - он добавляется в семейство Documents wda.Documents.Add "C: Docnj»iMiaEieHHe.dot" ' выполняем слияние основного документа и данных из источника With wda.ActiveDocument.MailMerge .Destination = wdSendToNewDocument .Execute End With ' печатаем приглашения wda.ActiveDocument.Printout Do While wda.BackgroundPrintingStatus  0 DoEvents Loop ' сохраняем получившийся документ wda.ActiveDocument.SaveAs "C:DocMailMergeDoc.doc" ' закрываем окно с новым документом wda.ActiveWindow.Close False ' закрываем, не сохраняя, окно с первоначальным документом wda.Documents (1).Close False ' если нет больше открытых документов, то закрываем Word If wda.Documents.Count = 0 Then wda.Quit End If ' Удаляем временную таблицу db.TableDefs.Delete "СписокПриглашенных" db.Close Set wda = Nothing Set rst = Nothing Set rstNew = Nothing Exit Sub err_StartWord: If Err = 429 Then ' Word не запущен Set wdd = CreateObject("Word.Application") Resume Next Else MsgBox Err.Description & " " & Err.Number, vblnformation Exit Sub End If End Sub 

Сначала создается таблица «СписокПриглашенных» с той же структурой, которая была создана вручную. Затем все данные, отображаемые в форме, записываются в эту таблицу. Все операции с данными выполняются с использованием объектов DАО. Объект Application Word создается с помощью функции GetObject() или CreateObject () в зависимости от того, запущен ли уже Word. Для создания нового документа на основе шаблона используется метод Add семейства Documents. При слиянии основного документа с записями в таблице создается новый документ. Для этого устанавливается значение свойства Destination объекта MailMerge равным константе wdSendToNewDocument. Этот документ уже не содержит поля слияния, а является просто текстовым документом, который можно сохранить в виде файла, задав его имя. Перед сохранением в файле документ выводится на печать. После этого нужно аккуратно закрыть сначала новый документ, потом основной документ, к которому присоединен источник данных, и потом, если нужно, сам Word.