- •Программирование в среде Microsoft Office 2000
- •1. Основные сведения о vba
- •1.2. Макрорекордер в Office 2000
- •2.Основные сведения о программировании на vba
- •2.1. Алфавит и лексика языка vba
- •2.2.Правила записи текста программы на vba.
- •2.4. Данные в vba
- •2.4.1. Типы данных в vba
- •Т ипы данных в vba
- •Встроенные типы данных показаны в таблице 2.1.
- •2.4.2.Объявление переменных и констант простых типов
- •2.4.3. Массивы
- •2.5.Использование стандартных диалоговых окон для организации ввода-вывода данных
- •2.5.1.Функция MsgBox
- •2.5.2.Функция InputBox
- •2.6. Управляющие конструкции vba
- •2.6.1.Условный оператор if
- •2.6.2.Оператор выбора Select Case
- •2.6.3.Оператор цикла For … Next
- •2.6.4.Оператор цикла While…Wend
- •2.6.5.Оператор цикла Do…Loop
- •2.6.6. Оператор перехода GoTo
- •2.7. Основные сведения об объектах
- •2.7.1.Основные понятия объектно-ориентированного программирования.
- •2.7.2. Особенности использования объектов.
- •2.7.3. Коллекции в vba
- •2.7.4. Объект Application
- •2.7.5. Объекты Range и Selection
- •2.7.6. Оператор With для операций с одним объектом.
- •2.8.Обработка ошибок
- •3.Программирование в приложениях ms Office 2000.
- •3.1.Объекты excel, их свойства и методы.
- •3.1.1. Объектная модель excel
- •3.1.2. Коллекция Workbooks
- •3.1.3. Объект Workbook
- •3.1.4.Объект Worksheet
- •3.1.5.Объект Chart
- •3.1.6.Объекты Range и Selection
- •3.1.7. Пример решения задачи в excel на основе построения vba-кода.
- •3.2. Объекты word, их свойства и методы.
- •3.2.1. Модель объектов word
- •3.2.2.Объект Appication
- •3.2.3. Объект Document
- •3.2.4. Классы, задающие структуризацию текста документа.
- •3.2.5. Классы, составляющие части документа
- •3.2.5.1. Объект Range
- •3.2.5.2. Объект Selection
- •3.2.6. Классы, представляющие структуру документа
- •3.3. Автоматизация работы в Access на основе использования Access vba
- •3.3.1. Средства автоматизации работы в Access.
- •3.3.2. Объектная модель Microsoft Access
- •3.3.3.Особенности программирования в Access vba
- •3.3.3.1. Модель программирования Access
- •3.3.3.2. Особенности работы с объектами в Access vba.
- •3.3.4. Манипулирование в Access объектами Application
- •3.3.5. Объекты доступа к данным
- •3.3.5.1. Объекты dao
- •3.3.5.2. Объекты ado
- •3.3.6. Использование объектов доступа к данным в Access
- •3.3.6.1. Соединение с текущей базой данных
- •3.3.6.2. Открытие базы данных
- •3.3.6.3. Создание базы данных
- •3.3.6.4. Выполнение операций с записями
- •3.3.6.5. Перемещение по набору записей
- •3.3.6.6. Поиск записей в объектах Recordset
- •3.3.7. Пример решения задачи в Access на основе построения vba-кода
- •3.4.Совместная работа приложений Microsoft Office 2000
- •4.Список рекомендуемой литературы
3.4.Совместная работа приложений Microsoft Office 2000
При открытии любого из приложений Office (Word, Excel и т.д.) автоматически создается объект Application открываемого приложения. При этом сам объект и все входящие в него объекты становятся доступны в VBA. Однако часто возникает необходимость одновременной работы с несколькими приложениями, как правило, работы связанной с обменом данными. VBA позволяет, из макроса работающего в одном приложении, ссылаясь на объекты, свойства и методы другого приложения, получать, редактировать или экспортировать данные. Сделать это можно, создав в одном приложении объектную переменную, ссылающуюся на объект другого приложения. Если такая переменная создается, то должен быть организован доступ к объектам того приложения, на которые ссылается переменная. Это достигается посредством операции связывания. Связывание может проходить на разных этапах работы: на этапе компиляции (раннее связывание) или при выполнении программы (позднее связывание). Позднее связывание осуществляется динамически при выполнении соответствующего оператора. Лучше выполнять раннее связывание, поскольку позднее работает медленнее и доступно не для всех объектов.
Чтобы выполнить раннее связывание необходимо:
Установить ссылку на библиотеку типов другого приложения в диалоговом окне команды ССЫЛКИ из пункта меню СЕРВИС.
Объявить переменную соответствующего типа.
Например:
Dim appWD as Word.Application
Dim appXL as Excel.Application
Переменная appWD указывает на документ Word, а переменная appXL на рабочую книгу Excel.
Создать объект с помощью метода 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