Invoking Matlab function from VBA

조회 수: 7 (최근 30일)
VR
VR 2018년 10월 10일
편집: Kevin Chng 2018년 10월 11일
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
VR
VR 2018년 10월 11일
Kevin, Thank you. This worked ! I used GetFullMatrix instead of GetVariable.
Kevin Chng
Kevin Chng 2018년 10월 11일
Ya. Do you mind accept my answer?

댓글을 달려면 로그인하십시오.

채택된 답변

Kevin Chng
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개)

카테고리

Help CenterFile Exchange에서 Data Export to MATLAB에 대해 자세히 알아보기

제품


릴리스

R2016a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by