Invoking Matlab function from VBA
Mostrar comentarios más antiguos
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 comentarios
Kevin Chng
el 10 de Oct. de 2018
Editada: Kevin Chng
el 10 de Oct. de 2018
Very interesting. I never try out this way in VBA to call MATLAB, normally, I follow MATLAB spreadsheet link - here.
Or you try GetFullMatrix, dim your variable as double.
remove set
VR
el 11 de Oct. de 2018
Kevin Chng
el 11 de Oct. de 2018
Ya. Do you mind accept my answer?
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Data Export to MATLAB en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!