Создание приложения в VBA в Access для автоматизации формирования договоров в Word

Автор: Пользователь скрыл имя, 19 Декабря 2012 в 00:57, курсовая работа

Краткое описание

Следует заметить, что, являясь развитым языком программирования, VBA также включает в себя полноценную интегрированную среду разработки с полным набором специализированных окон, упрощающих проектирование, отладку и тестирование программ. Интегрированная среда разработки VBA представлена приложением, называемым редактором Visual Basic. Этот редактор имеет типичное для приложений Windows окно с панелью меню и набором панелей инструментов, которые позволяют получить доступ к ряду окон, предоставляющих инструментальные средства, необходимые для создания программ.

Оглавление

ВВЕДЕНИЕ 3
1 ДОГОВОР КАК ПРАВОВОЙ ДОКУМЕНТ 4
1.1 Значение договора 4
1.2 Классификация договоров 4
1.3 Содержание договора 6
2 ЯЗЫК VBA И ЕГО ВОЗМОЖНОСТИ 7
2.1 Понятие VBA 7
2.2 Объектная структура языка VBA 7
2.3 Использование языка VBA в Access 9
3 АВТОМАТИЗАЦИЯ ПРИЛОЖЕНИЙ 10
3.1 Понятие автоматизации 10
3.2 Создание ссылок на объекты 10
3.3 Создание объектов на сервере автоматизации 11
3.3.1 Использование функции CreateObject 12
3.3.2 Использование функции GetObject 13
3.3.3 Использование раннего связывания 13
3.4 Взаимодействие с приложением Word 14
4 Пример создания приложения для автоматизации формирования договоров 16
ЗАКЛЮЧЕНИЕ 21
Список использованных источников 22

Файлы: 1 файл

Курсовой проект.docx

— 155.04 Кб (Скачать)

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

Автоматизация не переносит  объекты из одного приложения в другое. Вместо этого она позволяет одному приложению управлять объектами, созданными другим приложением. И в этом заключено их главное различие. К примеру, если вы используете Microsoft Word в качестве сервера автоматизации, то пользователь должен иметь на своем компьютере это приложение установленным. В то же время пользователю не придется запускать приложение и манипулировать им вручную — за него это сделает программа автоматизации.

3.2 Создание ссылок  на объекты

Клиентам автоматизации  нужен способ определения того, какие  именно объекты конкретного сервера  автоматизации они могут использовать в своей работе. Эта информация хранится в файлах, называемых библиотеками типов, обычно имеющих расширения .tlb или .olb. Библиотеки типов содержат информацию об:

  • объектах;
  • методах;
  • свойствах;
  • событиях.

Несмотря на то, что для  использования объектов из сервера  автоматизации совсем не требуется  обязательное наличие библиотеки типов, она станет неплохим подспорьем. Рекомендуется всегда использовать библиотеку типов. Для использования же библиотеки типов при автоматизации на них нужно установить ссылки.

  1. Открываем редактор VBA, нажав в Access комбинацию клавиш Alt+F11.
  2. Выбираем пункт References в меню Tools. Откроется диалоговое окно ссылок (рис. 3.1).

 

Рисунок 3.1 – Добавление ссылок на библиотеки типов

 

  1. Находим в списке пункт Microsoft Word 12.0 Object Library и устанавливаем на нем флажок.
  2. Щелкаем на кнопке ОК, и ссылки на эти библиотеки типов будут добавлены в текущую базу данных Access.

После того как ссылки на библиотеки типов добавлены, можно  найти их объекты в «Обозревателе объектов». Чтобы запустить этот обозреватель, нужно нажать клавишу F2. После этого выбрать нужную библиотеку типов в комбинированном списке Project/Library.

3.3 Создание объектов на сервере автоматизации

Для работы с объектами  из другого приложения их нужно вначале  создать в тексте программы Access. Существует три способа реализовать эту операцию:

  • использование функции CreateObjесt;
  • использование функции GetObject;
  • использование раннего связывания.

3.3.1 Использование функции CreateObject

Функция CreateObject позволяет определить объект по его имени и создать один его экземпляр. Вот краткий пример ее использования:

Sub CreateObjectDemo()

' Использование  Word в качестве сервера автоматизации

' с помощью функции CreateObject

Dim objWord As Object

Set objWord = CreateObject("Word.Application")

objWord.Visible = True

objWord.Quit

End Sub

В данном примере для ссылки на создаваемый объект используется переменная специального типа Object. Это тип переменных, которые могут ссылаться на любые объекты: на документ Word, на диаграмму Excel, на форму Access.

Функция CreateObject преобразовывает обобщенную переменную объекта в конкретный тип объекта. Аргументом функции CreateObject является то, что известно под именем ProgID (идентификатор объекта). Это - уникальное значение, сопоставленное с типом создаваемого объекта. Большинство идентификаторов объекта можно получить, объединив имя приложения с именем его объекта. Так, идентификатор Word.Application соответствует объекту Applilcation приложения Word (а не собственному объекту Application приложения Access).

После того как строка программы  с вызовом функции CreateObject отработала, переменная objWord уже ссылается на экземпляр объекта Application приложения Word. Этот объект представляет собой сессию работы с Microsoft Word (равно как объект Application приложения Access представляет сессию работы с последним). Однако если установить на этой строке контрольную точку и остановиться в этом месте, нигде не найдется запущенного приложения Word. Это происходит потому, что Word, равно как и большинство других серверов автоматизации, запускается в невидимом режиме при вызове из программы автоматизации. В следующей строке программы свойству видимости приложения Word присваивается значение True, в результате чего окно этого приложения отображается на экране.

И наконец, вызывается метод Quit объекта Application приложения Word. Это — эквивалент вызова команды «Выход» в меню «Файл».

Кроме новой функции CreateObject в данном примере отсутствует какой-либо новый синтаксис. После того как извлекается объект автоматизации, можно использовать его свойства и методы точно так же, как и в любом объекте Access.

3.3.2 Использование функции GetObject

Функция GetObject очень близка к функции CreateObject. Вот пример ее использования:

Sub GetObjectDemo()

' Использование Word в качестве сервера автоматизации

' с помощью функции GetObject

Dim objWord As Object

Set objWord = GetObject("", "Word.Application")  

objWord.Visible = True

objWord.Quit

End Sub

Если запустить на выполнение эту процедуру, то обнаруживаем, что она работает в точности так же, как и CreateObjectDemo. В то же время, между функциями CreateObject и GetObject отмечается два существенных различия:

  • Функция CreateObject всегда создает новый экземпляр сервера автоматизации. Функция GetObject может использовать тот экземпляр, который уже запущен в системе.
  • Функция GetObject имеет первый, необязательный параметр, задающий документ. Если вызвать ее следующим образом: GetObject («с:\temp\doc1.doc», «Word.Application»), то при необходимости будет создан экземпляр объекта Aplication, и в это приложение будет загружен документ, находящийся в заданном файле.

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

3.3.3 Использование раннего связывания

Функции CreateObject и GetObject используют то, что в программировании называют поздним связыванием. При позднем связывании в тексте программы явно не указывается, какой тип объекта будет использоваться. Вместо этого используется объект общего типа Object, а интерпретатор VBA в ходе выполнения программы уже сам решает, какой тип объекта создавать. Третьим способом создания объектов является использование раннего связывания, которое позволяет применять родные типы переменных сервера автоматизации непосредственно в коде VBA.

Далее представлен пример создания объекта, преобразованный  в метод раннего связывания:

Sub EarlyBindingDemo()

' Использование Word в качестве сервера автоматизации

' с помощью раннего связывания

Dim objWord As Word.Application

Set objWord = New Word.Application

objWord.Visible = True

objWord.Quit

End Sub

При раннем связывании в  коде VBA используют родной тип объекта. Этот режим становится возможным благодаря установленной ссылке на библиотеку типов сервера автоматизации. После того как ссылка установлена, можно объявлять и инициализировать объект автоматизации в точности так же, как и любой собственный объект Access.

Рекомендуется использовать раннее связывание по нескольким причинам:

  • Не придется запоминать два разных синтаксиса создания объектов.
  • Получаем все преимущества механизма IntelliSense при написании программы, а это значит, что можно будет выявить ошибки еще до того, как их обнаружат пользователи программы.
  • Раннее связывание работает быстрее функций CreateObject и GetObject.

 3.4 Взаимодействие с приложением Word

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

Создадим простую форму Access, позволяющую вводить произвольный текст и имя файла. На этой форме создадим кнопку «Создать документ Word». После щелчка на кнопке создается документ, содержащий введенный текст и сохраненный под именем, введенным в нижнем текстовом поле формы.

Текст процедуры обработки щелчка на кнопке довольно прост:

Private Sub cmdCreate_Click()

' Копируем текст в документ Word

Dim objWord As Word.Application

' Инициируем  Word и новый документ

Set objWord = New Word.Application

objWord.Documents.Add

' Вставляем текст  после области по умолчанию

' Это - начало  документа

objWord.ActiveDocument.Range.InsertAfter (txtText.Value)

' Сохраняем файл

objWord.ActiveDocument.SaveAs (txtFileName.Value)

' и отображаем его 

objWord.Visible = True

End Sub

Единственной сложностью в этой задаче является необходимость хорошего знания объектной модели Word, чтобы заставить ее делать то, что нужно. Ключевыми действиями являются создание документа и добавление в него текста. Для создания документа вызывался метод Add коллекции Documents. Добавление текста — несколько более сложная задача. Документы Word содержат объект Range, который представляет выделенную в настоящий момент область текста. Объект Range имеет массу методов добавления текста, в том числе InsertAfter и InsertBefore. Сразу после создания документа текста в нем еще нет, поэтому объект Range просто указывает на начало документа. Вставляя текст после этой точки, вставляем его в самое начало документа — что как раз и нужно.

 

 

 

 

 

4 Пример создания приложения для автоматизации формирования договоров

  1. Создание базы данных и необходимых таблиц:

Запускаем Microsoft Access и в меню «Файл» выбераем «Создать». В окне «Создание файла» выбераем «Новая база данных». Сохраняем созданную базу данных. В данном примере база данных будет находиться в корневом каталоге диска C: и называться Dogovors.mdb. В открывшемся окне базы данных переходим на вкладку «Таблицы» и щелкаем два раза мышью по строке «Создание таблицы в режиме конструктора». В созданной таблице определяем три столбца ( рис. 4.1).

Рисунок 4.1 – Структура таблицы «Шаблоны»

Сохраняем эту таблицу  как «Шаблоны» и закрываем  окно конструктора. В окне базы данных на вкладке «Таблицы» еще раз  щелкаем по строке «Создание таблицы  в режиме конструктора». Набор столбцов для новой таблицы должен выглядеть  так:

Имя столбца

Тип данных

Размер

 

НомерДоговора

Текстовый (первичный ключ)

10

 

Город

Текстовый

30

 

Дата

Дата/время

50

 

Организация

Текстовый

50

 

Представитель

Текстовый

50

 

Должность

Текстовый

50

 

ЮрОснование

Текстовый

100 

Сохраняем эту таблицу  с именем «Договоры» и закрываем  окно конструктора таблицы.

На вкладке «Таблицы»  окна базы данных щелкнем два раза мышью по созданной таблице «Шаблоны», чтобы открыть ее в режиме ввода  данных. В первую строку этой таблицы  в столбец «Описание» вводим «Шаблон  договора», а затем выделяем ячейку в столбце «Шаблон» и в меню «Вставка» выбираем «Объект». В открывшемся  окне переставляем переключатель в  положение «Создать из файла», затем  нажимаем на кнопку «Обзор» и выбираем шаблон C:\ DogovorTemplate. dot. Затем нажимаем на кнопку OK, чтобы поместить шаблон внутрь базы данных.

  1. Создание формы Access и программного кода для формирования файла договора:

В окне базы данных переходим  на вкладку «Формы» и щелкаем  два раза мышью по строке «Создание  формы с помощью мастера». Откроется  окно мастера создания форм.  На первом экране мастера в списке «Таблицы»  и «Запросы» выбираем «Таблица: Договоры», затем помещаем в список «Выбранные поля» все поля из этой таблицы  и нажимаем на кнопку «Далее». На следующем  экране выбираем внешний вид формы  в один столбец и нажимаем на кнопку «Далее». На следующем экране выбираем стиль и нажимаем на кнопку «Далее». На последнем экране в окне определения  имени формы вводим имя формы  «Форма для занесения договоров», переставляем переключатель в положение  «Изменить макет формы» и нажимаем на кнопку «Готово». Форма будет  открыта в режиме конструктора. Произведем расстановку и дооформление созданных элементов на форме средствами конструктора. 

Информация о работе Создание приложения в VBA в Access для автоматизации формирования договоров в Word