- •Государственное образовательное учреждение высшего профессионального образования
- •Часть 1
- •Введение. Технологии обмена данными
- •Тема 1. Динамический обмен данными (dde)
- •1.1 Принципы динамического обмена данными
- •Структура транзакций dde
- •1.2. Транзакции dde
- •Передача данных из Excel в Access с помощью модуля Access
- •Взаимодействие Access и Word
- •1.3. Примеры и задачи: обмен данными между приложениями по протоколу dde
- •Использование функции dde
- •Взаимодействие Access и Excel
- •Построение диаграммы с помощью инструкции ddeExecute
- •Тема 2. Буфер обмена данными
- •2.1 Буфер обмена данными в vb
- •2.2. Методы объекта Clipboar.
- •2.3. Примеры и задачи: программирование буфера обмена данными
- •Тема 3. Ole-технологии
- •3.1. Представление ole-данных
- •3.2. Элемент управления ole-контейнер
- •3.3. Объекты ole как элементы управления
Взаимодействие Access и Excel
Задача. В Access создать форму для расчетов по формуле с помощью Excel.
Создать в Access форму “Калькулятор”с 3 полями (табл. 2):
Таблица 2
№ поля |
Значение свойства “Данные” |
Подпись поля |
1 |
=Т3() |
|
2 |
|
Введите формулу со знаком “=” |
3 |
|
Результат |
Создать книгу Excel с именем “Calc.xls”, в ячейку А1 ввести текст «Калькулятор», сохранить файл на диске С: и свернуть книгу.
Добавить на форму 2 кнопки: <Очистить> и <Вычислить>
Для поля №1 создать модуль класса:
Function T3() As String
Dim chanel As Long
chanel = DDEInitiate(“Excel”, “С:\Calc.xls”)
T3 = DDERequest(chanel, “R1C1”)
DDETerminate chanel
End Function
Для кнопки <Очистить> создать модуль класса:
Private Sub Очистить_Click()
[Forms]![Форма1]![Поле2] = “”
[Forms]![Форма1]![Поле3] = “”
End Sub
Для кнопки <Вычислить> создать модуль класса:
Private Sub Вычислить_Click()
Dim chanel1 As Long, chanel2 As Long
chanel1 = DDEInitiate(“Excel”, “C:\Calc.xls”)
DDEPoke chanel1, “R2C1”, [Forms]![Форма1]![Поле2]
DDETerminate chanel1
chanel2 = DDEInitiate(“Excel”, “C:\Calc.xls”)
[Forms]![Форма1]![Поле3] = DDERequest(chanel2, “R2C1”)
DDETerminate chanel2
End Sub
П
роверить
выполнение расчета по формуле (рис.4):
Рис.4
Построение диаграммы с помощью инструкции ddeExecute
Задача. В Access создать код для передачи данных в Excel и построения на их основе диаграммы.
Создать в Access форму с кнопкой, модуль класса которой содержит код:
Private Sub Кнопка0_Click()
Dim chan As Variant, SheetName As Variant, I As Variant, TopicList As Variant
On Error Resume Next
chan = DDEInitiate("Excel", "System")
If Err Then
Err = 0
I = Shell("excel", 1)
If Err Then Exit Sub
chan = DDEInitiate("Excel", "System")
End If
DDEExecute chan, "[New(0)]" ‘Создаст файл Книга1, в которой текущей будет установлена ячейка R1C1
TopicList = DDERequest(chan, "Selection") 'Формирует строку: [Книга1]Лист1!R1C1
SheetName = Left(TopicList, InStr(1, TopicList, "!") - 1) 'Формирует имя рабочего листа: [Книга1]Лист1
MsgBox SheetName
DDETerminate chan
chan = DDEInitiate("Excel", SheetName)
For I = 1 To 10
DDEPoke chan, "R1C" & I, I
Next I ' Создает диапазон из 10 ячеек со значениями от 1 до 10
DDEExecute chan, "[Select(""R1C1:R1C10"")][New(2,0)]" ‘Параметр 2 функции “New” задает построение диаграммы в отдельной книге
End Sub
При нажатии кнопки будет открыта новая книга Excel, в которой заполнятся 10 ячеек 1-й строки – диапазон для построения диаграммы. Диаграмма будет построена в отдельной книге (рис.5).
Рис.5
Тема 2. Буфер обмена данными
Содержание темы:
Программирование буфера обмена в среде Visual Basic
Методы объекта Clipboard.
Примеры и задачи: программирование обмена данными между приложениями через буфер обмена.
