Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование ИС.Часть1(DDE+буфер обмена+OLE)....doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
743 Кб
Скачать
☆
  1. Взаимодействие 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

  1. Построение диаграммы с помощью инструкции 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. Буфер обмена данными

Содержание темы:

  1. Программирование буфера обмена в среде Visual Basic

  2. Методы объекта Clipboard.

  3. Примеры и задачи: программирование обмена данными между приложениями через буфер обмена.