Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MVBA_2000.DOC
Скачиваний:
13
Добавлен:
08.11.2019
Размер:
599.55 Кб
Скачать

3.4.Совместная работа приложений Microsoft Office 2000

При открытии любого из приложений Office (Word, Excel и т.д.) автоматически создается объект Application открываемого приложения. При этом сам объект и все входящие в него объекты становятся доступны в VBA. Однако часто возникает необходимость одновременной работы с несколькими приложениями, как правило, работы связанной с обменом данными. VBA позволяет, из макроса работающего в одном приложении, ссылаясь на объекты, свойства и методы другого приложения, получать, редактировать или экспортировать данные. Сделать это можно, создав в одном приложении объектную переменную, ссылающуюся на объект другого приложения. Если такая переменная создается, то должен быть организован доступ к объектам того приложения, на которые ссылается переменная. Это достигается посредством операции связывания. Связывание может проходить на разных этапах работы: на этапе компиляции (раннее связывание) или при выполнении программы (позднее связывание). Позднее связывание осуществляется динамически при выполнении соответствующего оператора. Лучше выполнять раннее связывание, поскольку позднее работает медленнее и доступно не для всех объектов.

Чтобы выполнить раннее связывание необходимо:

  1. Установить ссылку на библиотеку типов другого приложения в диалоговом окне команды ССЫЛКИ из пункта меню СЕРВИС.

  2. Объявить переменную соответствующего типа.

Например:

Dim appWD as Word.Application

Dim appXL as Excel.Application

Переменная appWD указывает на документ Word, а переменная appXL на рабочую книгу Excel.

  1. Создать объект с помощью метода CreateObject.

Например:

Set appWD = CreateObject(“Word.Application.8”)

appWD.Visible = True

Set appXL = CreateObject(“Excel.Application.8”)

Функция CreateObject возвращает объект Application того приложения, имя которого задается параметром и присваивает его переменной.

Если при работе с созданным объектом необходимо открыть окно приложения, то свойство Visible следует установить как True.

После выполнения указанных действий становятся доступными свойства и методы объекта, ссылка на который содержится в переменной. По окончанию работы с объектами и методами объекта другого приложения, объектную переменную можно очистить, записав в нее ключевое слово Nothing оператором Set. Однако приложение при этом остается открытым. Закрыть приложение можно методом Quit.

Например: appWD.Quit

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

Пусть перед нами стоит задача создать в документе Word таблицу расчета значений функции y=a*x2 для x=1,2,..,10 при любом а. Выполнять эти расчеты проще в Excel, поэтому в основу решения задачи положен следующий алгоритм. Основным приложением является Word, в документе которого содержатся исходные данные для решения задачи и макрос. Документ Word имеет следующий вид:

Задание: Рассчитать и вывести значения функции у=ax2 в таблицу для x=1,2,…,10,

а=4

Значение а может вводиться любое, перед выполнением макроса оно должно быть выделено.

Текст макроса:

Public Sub W_Ex_W()

Dim xlApp As Excel.Application

Set xlApp = CreateObject("Excel.Application.8")

xlApp.Visible = True

xlApp.Workbooks.Add

xlApp.Worksheets("лист1").Range("a1").Value = Selection.Text

xlApp.Worksheets("лист1").Range("a2").Value = "x"

xlApp.Worksheets("лист1").Range("b2").Value = Selection.Text + "x^2"

For Each c In xlApp.Worksheets("лист1").Range("a3:a12")

Count = Count + 1

c.Value = Count

Next c

For Each c In xlApp.Worksheets("лист1").Range("b3:b12")

c.Value = "=r1c1*rc[-1]^2"

Next c

Count = 0

Dim rng As Range

Set rng = ActiveDocument.Paragraphs(3).Range

For Each c In xlApp.Worksheets("лист1").Range("a2:b12")

rng.InsertAfter Text:=c.Value

Count = Count + 1

If Count Mod 2 = 0 Then

rng.InsertAfter Text:=vbCr

Else

rng.InsertAfter Text:=vbTab

End If

Next c

rng.ConvertToTable Separator:=wdSeparateByTabs

rng.Tables(1).AutoFormat Format:=wdTableFormatClassic4

xlApp.Workbooks(1).Close Savechanges:=False

xlApp.Quit

End Sub

В макросе функцией CreateObject создается объект Application Excel. В новую книгу Excel в ячейку А1 из Word в виде выделенного фрагмента передается значение а. В диапазоне A2:B12 создается и рассчитывается таблица значений X и Y. Затем данные указанного диапазона вставляется в пустой последний абзац документа Word по два разделенных символом табуляции числа в строку. Вставленные данные преобразуются в таблицу и с помощью автоформата, таблица форматируются в соответствии с форматом “Стандарт4”. Книга Excel закрывается без сохранения, закрывается приложение Excel.

После выполнения макроса документ Word имеет следующий вид:

Задание: Рассчитать и вывести значения функции у=ax2 в таблицу для x=1,2,…,10,

A=4

x

4x^2

1

4

2

16

3

36

4

64

5

100

6

144

7

196

8

256

9

324

10

400

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]