如何从 Matlab 调用 Excel 中的 Excel 宏?

How can I invoke an Excel Macro in Excel from Matlab?

我想从 Matlab 在 Excel 中调用 Excel 宏或 VBA 函数。应该如何实现呢?我想我应该用

创建一个句柄
filename = './sampleWorkbook';
Excel = actxserver('Excel.Application');
workbook = Excel.Workbooks.Open(filename);

那么我应该如何继续调用 Excel 工作簿文件名中的 VBA 函数?

你快到了。拨打 Application.Run("macroname") 应该没问题。确保 macroname 在 Excel 工作簿中的 VBA Module 中并且具有 Public 范围。

filename = './sampleWorkbook';
Excel = actxserver('Excel.Application');
workbook = Excel.Workbooks.Open(filename);
Excel.Application.Run("macroname");

这是 link 到 Application.Run 的 MSDN 文档:https://msdn.microsoft.com/en-us/library/office/ff197132.aspx

我找到了答案,非常接近 joehanna 的答案,但是使用正确的 Matlab 格式的 运行 命令并关闭之前打开的工作簿并释放 activeX 服务器。

filename = 'C:\Book1.xlsm';
excel = actxserver('Excel.Application');
%excel.Visible = 1;
excel.Workbooks.Open(filename);
retval = excel.Run('trial');
excel.Workbooks(1).Close
excel.Quit
excel.release