Інтеграція Access з іншими компонентами офісу, MS Office, Програмні керівництва, статті

Програмуючи в Access не варто забувати, що він є частиною пакета Microsoft Office, тому один з плюсів MS Access як засобу розробки – інтегрованість з такими потужними програмами як Word, Excel, PowerPoint, Outlook. Звичайно, отримати доступ до них можна не тільки за допомогою Access, але починаючи з версії MS Office 2000, всі вони мають один спільну мову програмування – VBA. І в цій серії статей розглянемо приклади використання такої інтеграції, або як її ще називають – автоматизації.


Автоматизація (раніше відома як OLE-автоматизація – OLE Automation) – це одне з найбільш важливих засобів технології ActiveX, що дозволяє програмно керувати об’єктами з інших додатків. І це основне засіб, за допомогою якого можна інтегрувати функціональні можливості різних пріложеній.Пріложенія, що підтримують автоматизацію, діляться на дві категорії: клієнти автоматизації і сервери автоматизації. Причому деякі програми можуть бути тільки клієнтами або тільки серверами автоматизації, але є й такі (і до них відноситься Microsoft Access), які можуть
виступати і в тому і в іншій якості.


Клієнти і сервери автоматизації


При інтеграції двох додатків одне надає свої об’єкти для використання, а інше використовує об’єкти першого додатку.




Через об’єкти автоматизації додаток – сервер відкриває доступ іншим програмам до тих своїми функціями, які можуть бути їм корисні. Наприклад, текстовий редактор може відкривати іншим програмам доступ до перевірки орфографії, служба зв’язку – доступ до створення та відправки повідомлень. Це дозволяє розробникам прискорити процес розробки своїх додатків, завдяки використанню готових функцій сервера.


Для програмного управління об’єктом автоматизації з усіх програм Microsoft Office необхідно:




    1. Встановити посилання на бібліотеку об’єктів програми-сервера автоматизації.
    2. Створити об’єкт потрібного класу.
    3. Здійснити всі необхідні дії над об’єктом, звертаючись до його властивостей і методів.
    4. Закрити об’єкт.

Але можна використовувати об’єкти сервера автоматизації і не встановлюючи посилання на конкретну бібліотеку об’єктів, проте в цьому випадку програма буде працювати повільніше. Це пов’язано з тим, що після установки посилання на бібліотеку, при оголошенні об’єктної змінної, можна вказати її конкретний тип, якщо ж посилання відсутня, то для цієї змінної доведеться вказати узагальнений тип – Object.


Microsoft Access як клієнт автоматизації


Щоб створити об’єкт для використання в операціях автоматизації, потрібно спочатку створити екземпляр його класу і привласнити посилання на нього об’єктної змінної. Однак створити можна не будь-який об’єкт з об’єктної моделі програми-сервера, а тільки глобальні об’єкти. Таким глобальним об’єктом для всіх об’єктних моделей додатків сімейства Microsoft Office є об’єкт Application, який знаходиться на вершині ієрархії об’єктів.


Для того щоб дізнатися, які властивості моделей об’єктів є глобальними, можна скористатися вікном перегляду об’єктів у редакторі VBA – Object Browser (запускається наприклад так: відкрийте будь-який модуль і натисніть F2).
Потім виберіть в списку Project / Dbrary потрібну бібліотеку, а потім виберіть елемент в списку Classes.
Існує кілька способів створення екземпляра класу об’єкту.




  1. За допомогою ключового слова New



Це ключове слово описує змінну типу Object і одночасно встановлює посилання на новий екземпляр класу об’єкта.


Dim app As New Excel.Application


При використанні ключового слова New для створення нового екземпляра класу Application запускається відповідна програма (наприклад, Word або Excel). Якщо це додаток вже запущено, то, щоб не запускати другий примірник, краще використовувати для створення нового екземпляра класу функцію GetObject ()


Щоб використовувати ключове слово New для створення екземпляра класу об’єкту автоматизації, необхідно попередньо додати посилання бібліотеки об’єктів додатка сервера в діалоговому вікні редактора VBA References (Посилання).


Приклад використання:


Sub PowerPointOpenFile_Click()
On Error GoTo Err_
Dim strAppName As String
Dim app As New PowerPoint.Application
      strAppName = CurrentProject.Path & “Презентація1.ppt”
      With app
            .Visible = True
            .Presentations.Open strAppName
      End With
      Set app = Nothing
Exit_:
      Exit Sub
Err_:
      MsgBox Err.Description
      Resume Exit_
End Sub




  1. За допомогою функції CreateObject ()


Функція CreateObject () створює посилання на новий екземпляр класу автоматизованого об’єкта. Значення, що повертається цією функцією, має бути присвоєно об’єктної змінної за допомогою оператора Set. Наприклад, названим оператором відкривається додаток Word, і посилання на нього присвоюється об’єктної змінної docobj. При цьому, навіть якщо Word уже був відкритий, буде запущений ще один його примірник:



Set app = CreateObject (“Excel.Application”)


Об’єктна змінна в даному випадку може бути оголошена як Object, і тоді посилання на бібліотеку об’єктів Microsoft Word встановлювати не треба. А може бути оголошена так:



Dim app As Excel.Application


В цьому випадку повинна бути обов’язково встановлена ​​посилання на бібліотеку об’єктів Microsoft Word ** .0 Object Library (** показує, що для різних версій офісу різні значення: 10.0, 11.0, 12.0 – для відповідно офісів ХР, 2003, 2007). Якщо на комп’ютері встановлено декілька версій Microsoft Office, то можна вказати номер версії програми, яка буде використовуватися при автоматизації, наприклад:



Set app = CreateObject(“Excel.Application.11”)


Приклад використання функції:


Sub ExcelOpenFile()
On Error GoTo Err_
Dim strAppName As String
Dim app As Excel.Application
      strAppName = CurrentProject.Path & “Кніга1.xls”
      Set app = CreateObject(“Excel.Application”)
      With app
            .Visible = True
            .Workbooks.Open strAppName
      End With
      Set app = Nothing
Exit_:
      Exit Sub
Err_:
      MsgBox Err.Description
      Resume Exit_
End Sub




  1. За допомогою функції GetObject ()



Цей спосіб використовується для того, щоб отримати посилання на вже існуючий екземпляр класу, тобто для доступу до існуючих документів, що зберігаються в файлах, або для доступу до об’єкта Application вже запущеного додатка-сервера. Функція Getobject () має наступний синтаксис:


Set <об'ектнаяПеременная> = Getobject ([<шлях>] [, <клас>])


Обов’язково має бути вказаний хоча б один з аргументів функції!


Розглянемо три варіанти написання функції:




тут опускається перший параметр – тоді функція працює подібно до двох вищесказаним – просто для створення екземпляра класу об’єкту.




тут вказані обидва параметри – шлях до файлу та ім’я програми. У цьому випадку запускається файл Кніга.xls




тут другий аргумент може бути опущений, якщо в реєстрі Windows існує зв’язка розширення файлу з об’єктом докладання. Наприклад, у випадку Microsoft Excel файли xls за замовчуванням мають об’єктний тип Excel.Workbook. Це означає, що якщо не вказувати аргумент <клас>, то буде створена посилання на об’єкт Workbook, представлений зазначеним у першому аргументі файлом.

Приклад використання функції:

Sub WordOpenFile()
On Error GoTo Err_
Dim strAppName As String
Dim app As Word.Application
      strAppName = CurrentProject.Path & “Doc1.doc”
      Set app = GetObject(“”, “Word.Application”)
      With app
            .Visible = True
            .Documents.Open strAppName
      End With
      Set app = Nothing
Exit_:
      Exit Sub
Err_:
      MsgBox Err.Description
      Resume Exit_
End Sub


Для того щоб легше було створювати код для роботи з об’єктами Word або Excel, згадайте про такому чудовому засобі цих додатків, як запис макросів. За допомогою запису макросів можна виконати всі необхідні дії, використовуючи інтерфейс користувача, потім переглянути згенерований код VBA і вбудувати цей код в свою процедуру VBA, тільки злегка підправивши його.


Наприклад: відкриваємо файл excel, вибираємо Сервіс – Макрос – Почати запис. У діалоговому вікні присвоюємо ім’я макросу і тиснемо «ОК». Далі робимо свої справи – форматіруем осередки, змінюємо дані – Все що завгодно. Послідовність дій записується в спеціальний модуль у вигляді команд VBA. Тиснемо зупинити запис. Потім Сервіс – Макрос – Редактор Visual Basic і в групі Modules знаходимо новий модуль. Відкриваємо і дивимося, як все що ви робили виглядає на VBA.


Після того як всі необхідні операції з об’єктами програми-сервера виконані, ці об’єкти слід закрити, щоб звільнити займану ними пам’ять. Більшість об’єктів підтримують для цього методи close або Quit. Крім того, слід звільнити об’єктну змінну, присвоївши їй значення Nothing.


У доданому до статті прикладі показані варіанти відкриття документів Word, Excel, Power Point. Для різноманітності для кожного документа використаний один з трьох способів відкриття. Але, зрозуміло, будь-який з документів можна відкрити будь-яким із способів.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*