如何调用Matlab

如何调用Matlab,matlab,vba,excel,Matlab,Vba,Excel,我有问题。我不知道用VBA excel调用Matlab的代码是什么 我试着用 matlabinit 但是在我运行它之后,它就不工作了,并且出现了一条错误消息“sub或function not defined” 伙计们,我有这个代码,但我不能运行它 Sub jadwal() '************************************************************* 'Unprotect sheets '******************************

我有问题。我不知道用VBA excel调用Matlab的代码是什么

我试着用

matlabinit
但是在我运行它之后,它就不工作了,并且出现了一条错误消息
“sub或function not defined

伙计们,我有这个代码,但我不能运行它

Sub jadwal()
'*************************************************************
'Unprotect sheets
'*************************************************************
Sheets("Hasil_jadwal_baru").Select
ActiveSheet.Unprotect
'*************************************************************
'Clear the previous schedule
'*************************************************************
Sheets("Hasil_jadwal_baru").Select
Range("A1:CG14").Select
Selection.ClearContents
'*************************************************************
'Clear the previous variable in MATLAB and set up the application
'*************************************************************

Application.DisplayAlerts = False
Application.Run "matlabinit"
MLEvalString "clear;"
MLEvalString "clc;"
'*************************************************************
'Send input to MATLAB
'*************************************************************
MLPutMatrix "ic_april", Range("ic_april")
MLPutMatrix "ic_juni", Range("ic_juni")
MLPutMatrix "ic_sept", Range("ic_sept")
MLPutMatrix "ic_libur_april", Range("ic_libur_april")
MLPutMatrix "ic_libur_juni", Range("ic_libur_juni")
MLPutMatrix "ic_libur_sept", Range("ic_libur_sept")
'*************************************************************
'Solve the problem via MATLAB and LP-SOLVE
'*************************************************************
MLEvalString "fixuntukmin"
'*************************************************************
'Send the result to EXCEL
'*************************************************************
MLGetMatrix "hasil_jadwal", "Hasil_jadwal_baru"
MatlabRequest
'*************************************************************
'Close MATLAB
'*************************************************************
MLClose
MLAutoStart "no"
Application.DisplayAlerts = True

'*************************************************************
'Finish Alarm
'*************************************************************

'*************************************************************
'Reprotect sheets
'*************************************************************
Sheets("Hasil_jadwal_baru").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True

End Sub

您能帮我吗???

听起来您只需要在VBA代码中添加对电子表格链接EX的引用。选择工具->参考,然后勾选电子表格链接EX library。在那之后,它应该会起作用

或者,您可以使用application.run调用外接程序函数,而无需添加引用。因此,请尝试
application.run“matlabinit”
。但我认为在这种情况下,添加一个引用是更好的,因为您不太可能分发一个调用matlab的电子表格


另外,您是否确保已安装加载项?在excel 2010中,单击“开发人员”选项卡,选择“加载项”(带有大的金色齿轮图标)并勾选“电子表格”链接Ex Ver。。。用于Matlab。然后进入VBA并如上所述添加参考。

是否使用电子表格链接插件?检查是否已将其添加到VBA引用中。我不是matlab专家,但我相信,要在VBA中调用matlab函数,首先需要使用@Dan建议的早期绑定或使用
CreateObject
的后期绑定对其进行绑定。查看此链接此链接是针对vb.net的,但会给你一个公平的想法。我不确定你在问什么?你犯了什么错误,同样的错误?你有没有像我建议的那样添加参考资料?因为您将需要它用于MLEvalString等,否则您必须使用application.run.Mr调用所有这些matlab函数,matlab版本是否有效?因为,我曾经问过我的朋友,他说也许我的matlab版本不兼容。您同意吗?我认为您需要电子表格链接excel插件,并且需要添加对它的引用。你试过这个吗?我非常怀疑这是一个matlab版本的问题,问题可能是您没有电子表格链接excel插件/工具箱。检查matlab中是否有工具箱类型ver,以及是否列出了电子表格链接EX。如果是,那么我肯定您没有在VBA中添加引用。有吗?我有列表:电子表格链接EX版本3.0.3,但我不知道发生了什么,为什么我不能运行代码。在您正在编写vba代码的窗口中:选择工具->引用,然后勾选电子表格链接EX库。