Invoking Matlab function from VBA
8 次查看(过去 30 天)
显示 更早的评论
I am trying to invoke Matlab functions from VBA and wrote a simple example code to try it out. The code tries to calculate the determinant of a random 2x2 matrix.
Sub Code()
Dim DMat(1 To 2, 1 To 2) As Double, DetA As Object, Matlab As Object
Upper = 1000
Lower = 10
For i = 1 To 2
For j = 1 To 2
DMat(i, j) = ((Upper - Lower) * Rnd + Lower)
Sheet1.Cells(i + 1, j) = DMat(i, j)
Next
Next
Set Matlab = CreateObject("Matlab.Application")
On Error GoTo Errorfound
Matlab.PutWorkspaceData "A", "base", DMat
Matlab.Execute "Result = det(A);"
Set DetA = Matlab.GetVariable(“Result”, “base”)
Sheet1.Range("A6").Value = DetA
Exit Sub
Errorfound:
With Err
MsgBox "Source: " & .Source & vbCrLf & "Desc: " & .Description, vbCritical, "Error " & CStr(.Number)
End With
End Sub
I get a Runtime error 440 on the line containing the GetVariable command. I have tried to use GetWorkspaceData instead of GetVariable, but the result is the same.
Where am I going wrong?
3 个评论
采纳的回答
Kevin Chng
2018-10-11
编辑:Kevin Chng
2018-10-11
Very interesting. I never try out this way in VBA to call MATLAB, normally, I follow MATLAB spreadsheet link.
Or you try GetFullMatrix, dim your variable as double.
remove set as it is not object anymore.
I guess it is because of the data type conversion. I faced it when I am using the MATLAB Api for python.
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Export to MATLAB 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!