Пример надо записать в m-файл excelprim2.m и выполнить:
% Инициализировать сеанс свЯзи с Excel.
chan = ddeinit('excel', 'Лист2');
% Диапазон набора Ячеек в Excel длЯ записи по DDE.
range = 'r1c1:r20c20';
% Создать поверхность графика пиков.
h = surf(peaks(20));
% Получить z данные поверхности.
z = get(h, 'zdata');
% Записать по DDE z данные в лист Excel.
rc = ddepoke(chan, range, z);
% Установить горЯчую свЯзь с
% Excel и матрицей MATLAB 'z'.
% Возвращаемый ответ вынуждает zdata и cdata длЯ
% поверхности h быть новыми данными, посланными от Excel.
rc = ddeadv(chan, range,...
'set(h,''zdata'',z); set(h,''cdata'',z);','z');
% Создать кнопку команды, котораЯ при нажатии на неё закончит обновлЯемую свЯзь,
% закончит сеанс свЯзи DDE,
% и закрывает окно рисунка.
c = uicontrol('String','&Close','Position',[5 5 80 30],...
'Callback', 'rc = ddeunadv(chan,range);ddeterm(chan);close;');
Поcлать текстовую строку с командой, которую понимает сервер, на выполнение
Синтаксис
rc = ddeexec(channel,'command')
rc = ddeexec(channel,'command','item')
rc = ddeexec(channel,'command','item',timeout)
Описание
ddeexec посылает строку на выполнение к другому приложению через установленный сеанс связи DDE. Определите команду как строку.
Если Вы опускаете дополнительные параметры, которые находятся не в конце списка параметров, Вы должны заменить пустой матрицей отсутствующие параметры.
Если успешно, ddeexec возвращается 1 в переменной, rc. Иначе это возвращается 0.
Параметры ddeexec:
channel |
Канал сеанса связи от ddeinit. |
'command' |
Строка, определяющая команду, которая будет выполнена. |
item (дополнительный) |
Строка, определяющая элемент DDE называет для выполнения. Этот параметр не используется для многих приложений. Если ваше приложение требует этого параметра, это обеспечивает дополнительную информацию для команды. Консультируйтесь с вашей документацией сервера для получения дополнительной информации. |
timeout (дополнительный) |
Скаляр, определяющий ограничение времени выполнения для этой операции. время ожидания определено в миллисекундах. (1000 миллисекунд = 1 секунда). Значение по умолчанию времени ожидания - три секунды. |
Пример
Учитывая канал, назначенный на сеанс связи, пошлите команду Excel:
rc = ddeexec(channel,'[formula.goto("r1c1")]')
Строка [formula.goto("r1c1")] является командой для Excel перевести курсор на ячейку A1.
Связь с Excel, должно быть, была установлена предварительно с командой ddeinit.
try %обработка ошибки установлениЯ DDE соединениЯ
% Установим DDE канал с Лист1, уже открытым в Excel.
chan1= ddeinit('excel', 'Лист1');
% Задаем начальные значениЯ матрицы z
z = [1,2,3;4,5,6;0,0,0];
% Установим диапазон Ячеек.
range = 'r1c1:r3c3';
% Запишем матрицу z в указанный диапазон.
rc = ddepoke(chan1, range, z)
% Считаем данные обратно из указанного диапазона Excel в матрицу z1 MATLAB
z1=ddereq(chan1,'r1c1:r3c3')
% Запишем в Ячейки строки 2 команды вычислениЯ синуса Excel
rc=ddepoke(chan1,'r2c1','=SIN(A1)');
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.