-1

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

我尝试使用

matlabinit

但是在我运行它之后,它不起作用并且出现错误消息"sub or 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

你能帮助我吗??

4

1 回答 1

0

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

或者,您可以调用插件函数而不使用 application.run 添加引用。所以试试 application.run "matlabinit"。但我认为在这种情况下添加参考是可取的,因为您不太可能分发调用 matlab 的电子表格。

您是否还确定已安装插件?在 excel 2010 中,单击开发人员选项卡,选择插件(带有大金色齿轮图标)并勾选电子表格链接 Ex Ver... 以用于 Matlab。然后进入 VBA 并如上所述添加引用。

于 2012-08-14T06:54:40.723 回答