- •Введение в Visual Basic For Applications
- •Создание макроса для Microsoft Excel/Visual Basic for Windows 95
- •Объекты, свойства и методы vba
- •Типы данных
- •Встроенные типы данных
- •Переменные и их объявление
- •Объявление численных и строковых переменных
- •Объявление переменных массива
- •Объявление и присваивание объектных переменных
- •Арифметические и логические операции Visual Basic
- •Использование встроенных функций Visual Basic
- •Математические функции
- •Строковые функции
- •Операторы Оператор присваивания
- •Операторы условного перехода If - Then и If-Then-Else
- •Оператор выбора Select Case
- •Логически прерываемые
- •Диалоговые окона Встроенные диалоговые окона
- •Применение функции MsgBox()
- •Создание простого окна сообщения
- •Добавление командных кнопок в окно сообщения для создания диалогового окна
- •Получение значений от функции MsgBox
- •Запись заголовка в диалоговое окно
- •Применение функции InputBox
- •Применение диалоговых окон других типов
- •Диалоговые окна приложения
- •Диалоговые окна пользователя
- •Добавление новой страницы диалога.
- •Помещение объектов в бланк.
- •Отображение диалогового окна пользователя.
- •Подключение процедур к объектам диалогового окна пользователя.
- •Объекты диалогового окна пользователя.
- •Объект «Командная кнопка».
- •Объект «Метка».
- •Объект «Окно редактирования».
- •Объект «Групповое окно».
- •Объект «Контрольный индикатор».
- •Объект «Кнопка выбора».
- •Объект «Окно списка».
- •Элементы управления диалоговых окон
- •Работа с файлами
- •Файлы последовательного и произвольного доступа
- •Чтение и запись последовательных файлов
- •Чтение и запись файлов произвольного доступа
- •Реорганизация данных в файле произвольного доступа
- •Создание пользовательских объектов Определение пользовательского объекта
- •Создание пользовательских свойств
- •Коммуникации Технология dde Что такое dde ?
- •Применение dde.
- •Открытие коммуникационного канала dde.
- •Закрытие канала dde.
- •Технология ole
Открытие коммуникационного канала dde.
Чтобы открыть канал DDE с другой программой , эта программа в первую очередь должна быть запущена. Для запуска используйте операторы Shell и AppActivate. Будьте осторожны при использовании оператора Shell: эта команда запускает программу не синхронно и следующий оператор вашей программы может выполниться прежде , чем начнёт работать вторая программа. После команды Shell потребуется пауза , которая позволит пропустить время инициализации и старта указанной программы.
Для инициализации связи между двумя выполняющимися программами используется метод DDEIniate, который имеет следующий синтаксис:
канал = DDEInitiate(программа, тема)
Аргументы программа и тема являются строками. Чтобы определить, какие значения аргументов используются, обратитесь к документации на программу. Этот метод возвращает номер канала, используемый в других командах Visual Basic для идентификации данного коммуникационного канала. При выполнении метода устанавливается соединение DDE между Visual Basic for Applications и другой программой.
Закрытие канала dde.
После завершения использования канала DDE его необходимо закрыть с помощью метода DDETerminate, имеющего следующий синтаксис:
DDETerminate(канал)
В данном случае канал - это номер канала, полученный от метода DDEInitiate.
Получение информации от сервера.
Чтобы запросить данные от сервера по открытому коммуникационному каналу, используется метод DDERequest, имеющий следующий синтаксис:
Переменная = DDERequest(канал, элемент)
Аргумент канал является номером канала , возвращённым методом DDEInitiate, а элемент указывает на определённую часть необходимых данных. Переменная представляет собой имя переменной, принимающей указанные данные. Эта переменная должна быть типа Variant.
В качестве примера создайте в Excel страницу диалога, которая использует DDE для получения строки текста из Word. В Word выделите предложение , укажите директиву Edit/Bookmark и назовите полученную закладку BookMark1. Затем переключитесь в Excel и запишите в модуле три приведённые ниже процедуры . Замените в этих процедурах ссылку на документ 26VBAOR.DOC ссылкой на один из ваших документов.
Option Explicit
Dim ChannelNum As Integer
Dim Results
‘
‘Установление связи DDE с Word и получение предложения.
‘
Sub OpenChannel()
‘Запуск Word и открытие документа 26VBAOR.DOC
‘Замените имя документа и путь на атрибуты одного из ваших документов
‘
ChannelNum = DDEInitiate (“WinWord”, “I:\BHV_VBA\26BAOR.DOC”)
‘Отображение номера канала в диалоговом окне.
DialogSheets(“DDEDialog”).EditBoxes(“DDEChannelBox”).Text = _ChannelNum
End Sub
‘
‘Получение данных.
‘
Sub GetData()
Results = DDERequest (ChannelNum, “BookMark1”) ‘Запрос данных.
‘Отображение данных в диалоговом окне.
DialogSheets (“DDEDialog”). EditBoxes (“DDEDataBox”). Text = Results
End Sub
‘
‘Закрытие связи.
‘
Sub CloseChannel ( )
DDETerminate (ChannelNum)
End Sub
Создайте страницу диалога, назовите её DDEDialog; добавьте к ней три командные кнопки, две метки и два текстовых окна. Назовите текстовое окно, расположенное под меткой «Результат», DDEDataBox, а второе текстовое окно – DDEChannelBox. Для подключения командной кнопки “Открыть DDE” к процедуре OpenChannel, командной кнопки “Принять данные” – к процедуре GetData и командной кнопки “Закрыть DDE” – к процедуре CloseChannel используйте директиву Tools/Assign Macro.
На пиктографическом меню Forms нажмите пиктограмму Run Dialog, затем на бланке нажмите командную кнопку “Открыть DDE”. Нажатие этой кнопки инициирует выполнение процедуры OpenChannel, которая открывает канал к программе Word for Windows (WinWord), затем запрашивает документ 26BAOR.DOC и отображает номер канала в окне DDEChannelBox.
Нажатие командной кнопки “Принять данные” инициирует выполнение процедуры GetData, запрашивающей содержимое закладки BookMark1. Если текст закладки будет обнаружен, то он отобразится в окне DDEData.
С Для закрытия канала DDE нажмите командную кнопку “Закрыть DDE”.
Передача информации серверу.
Чтобы послать информацию серверу, используется метод DDEPoke. Этот метод имеет следующий синтаксис:
DDEPoke (канал, элемент, данные)
Аргумент элемент указывает текст на сервере , который подлежит замене, а аргумент данные содержит текст, заменяющий текст на сервере. Единственной проблемой при использовании этого метода является то, что аргумент данные должен быть областью таблицы и не может быть простой строкой. Возможно, в будущих версиях Excel эта проблема будет устранена.
Для примера, добавьте процедуру, посылающую программе Word некоторый текст, который заменяет текст, маркированный как закладка BookMark1. Вначале добавьте к бланку командную кнопку “Послать данные”. Затем подключите эту кнопку к следующей процедуре:
‘
‘Пересылка данных.
‘
Sub PokeChannel ( )
‘Копирование данных из диалогового окна в ячейку таблицы.
Sheets (“Sheet1”). Cells(1, 1). Formula = _
DialogSheets(“DDEDialog”) . EditBoxes(“DDEDataBox”). Text
‘Создание ссылки на ячейку таблицы.
Set Result = Sheets(“Sheet1”). Cells(1, 1)
‘Пересылка ссылки на ячейку связанной программе для замены текста, маркированного как
‘BookMark1.
Application.DDEPoke ChannelNum, “BookMark1”, Result
End Sub
На пиктографическом меню Forms нажмите пиктограмму Run Dialog, затем на бланке нажмите командную кнопку “Открыть DDE” для подключения к Word. Для копирования текущего содержимого закладки BookMark1 в текстовое окно “Результат” нажмите командную кнопку “Принять данные”. В верхней части экрана расположено окно Word for Windows , на котором видна строка текста, маркированная как BookMark1. В нижней части экрана расположено окно Excel с диалоговым окном “Тестер DDE ” , на котором в текстовом окне “Результат” виден тот же текст.
Теперь текст находящийся в приемном окне "Результат" можно редактировать. Чтобы этот отредактированный текст заменилзаменил собой текст , маркированый как BookMark1 ,нажмите кнопку "Послать данные".
Процедура PokeChannel1 сначала копирует содержимое текстового окна в ячейку А1 таблицы Sheet1 . Затем это значение загружается как объект в переменную Result. Запомните , что метод DDEPoke должен должен получить в качестве в качестве аргумента не строку , а ссылку на область ячеек , содержащих этот текст . Затем метод DDEPoke передаёт этот текст в Word , где он заменяет собой текст , маркированный как BookMark1 . Для закрытия связи нажмите командную кнопку "Закрыть DDE".
Передача директив серверу.
Кроме передачи программе некотрох данных , связь DDE позволяет предать и директивы. Дитективы , которые вы хотите передать прогремме , должны быть на командном языке той программы , которой вы их передаёте.
Чтобы передать директивы подключённой программе , используется метод DDEExecute , имеющий следующий синтаксис :
DDEExecute ( канал , командная_строка)
Аргумент канал является номером канала DDE , а аргумент командная_строка - строкой, содержащей директиву для подключенной программы.
Перешлите программе Word директиву File/Print Preveiw. Для этого добавьте кдиалоговому окну "Тестер DDE" командную кнопку "ПредПросмотр" и подключите ее к следующей процедуре:
Sub PreveiwIt ()
' Пересылка связанной програме директивы предварительного просмотра.
DDExecute ChannelNum , "[FilePrintPreview]"
End Sub.
Обратите внимание на то , что директива FilePrintPreview заключена в квадратные скобки . Если вы опустите скобки , то Word вставит эту директиву как текст в точку вставки а не выполнит её как директиву.
