Application.DDEExecute lngChannel2, "y=[1,2;2,4;3,6]"
Application.DDEExecute lngChannel2, "z=x*y"
Rem Запрашиваем из MATLAB строковый результат выполнения последней команды
returnList1 = Application.DDERequest(lngChannel2, "EngStringResult")
Rem Размещаем на рабочем листе Excel результаты в цикле, учитывая,
Rem что returnList1 получили в виде массива строк размером n*1.
Rem LBound(returnList1,1)и UBound(returnList1,1)возвращаяют индексы
Rem первого и последнего элемента массива в первом столбце.
For i = LBound(returnList1, 1) To UBound(returnList1, 1)
Worksheets("Лист1").Cells(i, 1).Formula = returnList1(i, 1)
Next i
Rem Запрашиваем из рабочего пространства MATLAB значения матрицы z
returnList2 = Application.DDERequest(lngChannel2, "z")
Rem Размещаем на рабочем листе Excel результаты в двух вложенных циклах,
Rem учитывая,что матрицу returnList2 получили в виде массива чисел размером n*m.
Rem UBound(returnList2,1)возвращает число строк, а (returnList2, 2) число столбцов.
For i = LBound(returnList2, 1) To UBound(returnList2, 1)
For j = LBound(returnList2, 2) To UBound(returnList2, 2)
Worksheets("Лист1").Cells(i, j + 2).Formula = returnList2(i, j)
Next j
Next i
Rem Посылаем команды построения графика в MATLAB на выполнение
Application.DDEExecute lngChannel2, "figure"
Application.DDEExecute lngChannel2, "fplot('[tan(x),sin(x),cos(x)]',2*pi*[-1 1 -1 1])"
Rem Запрашиваем из MATLAB результат выполнения последней команды
Rem Если команда в MATLAB успешно выполнилась, то в return4 строковый результат "yes",
Rem а график размещается в буфере обмена Windows
return4 = Application.DDERequest(lngChannel2, "EngFigureResult")
Rem Размещаем на рабочем листе Excel результат "yes" или "no"
Worksheets("Лист1").Cells(8, 1).Value = return4
Rem Выбираем на рабочем листе Excel место будующей встаки графика
Worksheets("Лист1").Range("A12").Select
Rem Если в return4 строковый результат "yes", то вставляем картинку из буфера обмена
If return4(1) = "yes" Then ActiveSheet.PasteSpecial _
Format:="Metafilepict", DisplayAsIcon:=True
Rem Посылаем команды символьных вычислений в MATLAB на выполнение
Application.DDEExecute lngChannel2, "syms x y z a"
Application.DDEExecute lngChannel2, "x=[1.2,2,3;4,5,6;7,8,9]"
Application.DDEExecute lngChannel2, "y=[1,2;2,4;a,2*a]"
Application.DDEExecute lngChannel2, "z=x*y"
Rem Запрашиваем из MATLAB строковый результат выполнения последней команды
returnList3 = Application.DDERequest(lngChannel2, "EngStringResult")
Rem Размещаем на рабочем листе Excel результат (массив строк)в цикле.
For i = LBound(returnList3, 1) To UBound(returnList3, 1)
Worksheets("Лист1").Cells(i, 6).Formula = returnList3(i, 1)
Next i
End If
End Sub
Private Sub CommandButton2_Click()
Rem Процедура закрытия связи
DDETerminate (lngChannel2)
End Sub
В результате клика левой кнопки мыши на кнопке 1 получим следующие результаты:
Обратите внимание в каком виде представлены результаты вычислений.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.