Динамический обмен данными (DDE), страница 9

Создание связей с использованием динамического обмена данными (DDE) в Microsoft Excel без использования VBA.

Приложение, с данными которого требуется установить связь, должно поддерживать динамический обмен данными (DDE).

1   Выделите ячейку, из которой требуется создать связь.

2   Введите формулу, используя следующие синтаксис: имя приложения; имя документа или раздела документа; диапазон ячеек, значение, поле или данные, на которые сделана ссылка.
 Приведенный ниже пример иллюстрирует различные части формулы с удаленными ссылками и используемые в ней разделители.
Формула с разделителями
Знак (|) разделяет имя программы и имя документа или раздела. Восклицательный знак (!) отделяет имя документа или раздела от диапазона, значения поля или данных, на которые установлена ссылка.

3   Нажмите клавишу ENTER.

Примечание. Если имя приложения, документа, раздела или элемента данных содержит пробелы или специальные знаки формул, например двоеточие (:) или знак минуса (–), либо если имя имеет вид ссылки на ячейку, заключите его в апострофы

Пример1. Для связи с элементом (переменная x в рабочем пространстве MATLAB) через раздел Engine приложения MATLAB введите в ячейку Excel формулу:

=MATLAB|Engine!'x'

Ограничения.

  • При изменении значения переменной x в MATLAB содержимое ячейки Excel автоматически не обновляется. Для обновления значения требуется выделить данную ячейку и нажать клавишу <Enter>.
  • Если  x –матрица, то в ячейку Excel будет передан только элемент x(1,1).

Использование Visual Basic  для  MATLAB Сервера DDE

Связь осуществляется с помощью макросов на Visual Basic  for Applications (VBA) с использованием методов (функций и процедур для объектов ):

DDEInitiate

DDEExecute

DDERequest

DDEPoke

DDETerminate


Инициализация канала связи (VBA  DDEInitiate метод)

Открывает DDE канал с приложением  и возвращает номер канала.

DDEInitiate(App, Topic)

где

App (Тип- String). Имя приложения.

Topic (Тип- String). Имя раздела.

Пример1.Открывает канал связи с  разделом Engine приложения MATLAB.

lngChannel = Application.DDEInitiate(App:="MATLAB", Topic:="Engine")

Пример 2.

Открывает канал связи с разделом документ Word с именем на диске C:\WINWORD\FORMLETR.DOC приложения MS Word.

channelNumber = Application.DDEInitiate( _

    app:="WinWord", _

    topic:="C:\WINWORD\FORMLETR.DOC")

Посылка команд к MATLAB для выполнения (VBA DDEExecute метод)

Клиенты посылают команды MATLAB, используя DDE операцию DDEExecute,

Application.DDEExecute(Channel, Command)

или

Application.DDEExecute Channel, Command

где

Channel  (Тип- Long). Номер канала, установленный с помощью метода  DDEInitiate.

Command (Тип- String). Команда имеющая смысл приложении, куда посылается.

Пример1: Передача в MATLAB на выполнение команды присвоения значений матрице

lngChannel2 = Application.DDEInitiate(App:="MATLAB", Topic:="Engine")

Application.DDEExecute lngChannel2, "y=[1,2;2,4;3,6]"

Application.DDETerminate (lngChannel2)

Пример2 Передача  в MS Word команды печати:

channelNumber = Application.DDEInitiate( _

    app:="WinWord", _

    topic:="C:\WINWORD\FORMLETR.DOC")

Application.DDEExecute channelNumber, "[FILEPRINT]"