Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Посiбник_VB.doc
Скачиваний:
9
Добавлен:
22.08.2019
Размер:
5.08 Mб
Скачать

Приклади створення контролерів автоматизації

У загальному випадку контролер автоматизації повинен виконувати наступні дії:

  • Перевірити, чи запущена копія додатка-сервера.

  • У залежності від результатів перевірки запустити копію додатка Office, що автоматизується, або підключитися до вже наявної копії.

  • Зробити вікно додатка-сервера видимим (у загальному випадку це не обов'язково).

  • Виконати якісь дії з додатком-сервером (наприклад, створити або відкрити документи, змінити їхні дані, зберегти документи й ін.)

  • Закрити додаток-сервер, якщо його копія була запущена даним контролером, або відключитися від нього, якщо контролер підключився до вже наявної копії.

Нижче наведено проект з використанням серверів автоматизації MS Office, а саме Word, Excel, PowerPoint і Access, які запускаються з середовища Delphi, причому, контролер автоматизації виконує всі п’ять перерахованих дій.

Uses ComObj, ActiveX;

procedure TForm1.btnOKClick(Sender: TObject);

var

ServerIsRunning : boolean;

Unknown : IUnknown;

Result : HResult;

AppProgID : String;

App : Variant;

begin

if lstName.ItemIndex=-1 then lstName.ItemIndex:=0;

/// Програмний ідентифікатор додатка-сервера

AppProgID:=lstName.Items[lstName.ItemIndex]+'.Application';

ServerIsRunning := False;

Result := GetActiveObject(ProgIDToClassID(AppProgID),nil,Unknown);

if (Result = MK_E_UNAVAILABLE) then

begin

// Створення одного екземпляра сервера

App := CreateOleObject(AppProgID);

App.Visible := True; // Показати вікно додатку на екрані

end

else

begin

// З'єднання з вже запущенною копії сервера

App := GetActiveOleObject(AppProgID);

ServerIsRunning := True;

end;

case lstName.ItemIndex of

0: // Word.Application

begin

App.Documents.Add; // Відкрити новий документі

App.Selection.TypeText

('Delphi -> Word: Вставка тексту в документ.');

//-----------------------------

// Інші дії з об'єктом додатку Word.Application

//-----------------------------

end;

1:// Excel.Application

begin

App.WorkBooks.Add;

// Дії з активним робочим листом

App.ActiveWorkBook.WorkSheets[1].Cells[1,2].Value:=

'Delphi -> Excel: Вставка тексту в комірку листа.';

App.ActiveWorkBook.WorkSheets['Лист1'].Cells[1,1].Value:='25';

App.ActiveWorkBook.WorkSheets[1].Cells[2,1].Value:='26';

// Добавлення формули в комірку робочого листа

App.ActiveWorkBook.WorkSheets[1].Cells[3,1].Value := '=SUM(A1:A2)';

//-----------------------------

// Інші дії з об'єктом додатку Excel.Application

//-----------------------------

end;

end;

2:// Access.Application

begin

// Відкриття існуючої бази даних App.OpenCurrentDatabase('D:\Baza_Usp\uspish_uk.mdb');

// Відкриття таблиці student бази даних uspish_uk.mdb

App.DoCmd.OpenTable('student');

showMessage('Delphi -> Access');

//-----------------------------

// Інші дії з об'єктом додатку Access.Application

//-----------------------------

end;

3:// PowerPoint.Application

begin

// Відкриття існуючої презентації

App.Presentations.Open(FileName:='D:\Тема 2.ppt');

//Запуск презентації на виконання

App.ActivePresentation.SlideShowSettings.Run;

showMessage('Delphi -> PowerPoint');

//-----------------------------

// Інші дії з об'єктом додатку PowerPoint.Application

//-----------------------------

end;

if not ServerIsRunning then App.Quit;

App:=Unassigned;

end;

Наступний проект створений у середовищі VB. NET. В ньому демонструються два типи зв’язування (раннє і пізнє) з сервером автоматизації MS Word. Тут наявність запущеної копії сервера автоматизації не перевіряється.

Private Sub LateBinding_Click_1(ByVal sender As System.Object,_

ByVal e As System.EventArgs) Handles LateBinding.Click

' Приклад пізнього зв'язування

' із зовнішнім об'єктом Word

Dim oWord As Object ' невизначений об'єкт

oWord = CreateObject("Word.Application")

oWord.Visible = True

MsgBox("Пізнє зв'язування")

oWord.Quit()

oWord = Nothing

End Sub

Private Sub EarlyBinding_Click_1(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles EarlyBinding.Click

' Приклад раннього зв'язування

' із зовнішнім об'єктом Word

' Буде працювати тільки у випадку наявності посилання

' (Project|References) на реально існуючий додаток

Dim oWord As New Word.Application 'створюємо конкретний об'єкт

' Можна створити об'єкт у такий спосіб:

' Dim oWord As Word.Application ' описуємо

' Set oWord = New Word.Application ' створюємо новий екземпляр

oWord.Visible = True

oWord.Documents.Add()

oWord.Selection.TypeText_

("VB. NET -> Word: Вставка тексту в документ.")

MsgBox("Раннє зв'язування")

oWord.Quit()

oWord = Nothing

End Sub

Visual Basic Scripting Edition

Visual Basic Scripting Edition (або просто VBScript) — це мова програмування від компанії Microsoft, призначена для створення сценаріїв (скриптів). VBScript є підмножиною мови Visual Basic і широко використовується при створенні адміністративних сценаріїв у системі Windows. VBScript за замовчуванням підтримується в Windows Script Host (WSH), що у свою чергу за замовчуванням установлюється разом з майже кожною версією Windows.

Синтаксис VBScript є трохи спрощеною версією стандартного синтаксису Visual Basic. Наприклад, у VBScript не підтримується типізація: усі змінні мають тип Variant. Сценарії мовою VBScript найчастіше використовуються в наступних областях:

  • Автоматизація адміністрування систем Windows.

  • Серверний програмний код на сторінках ASP у Web-додатках.

  • Клієнтські сценарії на Web-сторінках (в основному тільки в броузері Internet Explorer).