【问题标题】:Pass argument from MATLAB to VBA when macro is called调用宏时将参数从 MATLAB 传递到 VBA
【发布时间】:2015-02-05 21:53:37
【问题描述】:

目前我有一个 MATLAB 脚本,它打开一个 excel 表并继续运行一个宏,如代码所示:

excelApp = actxserver('Excel.Application');
% -------------------------------------------------------------------------

% Open workbook...
% -------------------------------------------------------------------------
excelWB = invoke(excelApp.Workbooks,'Open','O:\Tools\Measurement Database Tool\Parse_Compare_Import.xlsm');
% -------------------------------------------------------------------------

% Run macro...
% -------------------------------------------------------------------------
invoke(excelApp, 'Run', 'OpenFiles');
% -------------------------------------------------------------------------

重要的是脚本的用户将选择一个文件夹,MATLAB 脚本需要从中工作,这个文件夹会因每个用户而改变,因此我不能将文件夹路径编码到脚本中,以避免用户不得不为 MATLAB 选择同一个文件夹,然后在 excel 中再次选择相同的文件夹,当我打开并运行宏时,有没有办法将此路径名从 MATLAB 传递给 excel?

【问题讨论】:

  • OpenFiles 是 Excel 宏子的参数吗?
  • 这是宏名

标签: matlab vba interface arguments


【解决方案1】:

连接到 Excel(您的 excelApp)后,您可以将 MATLAB(用户选择的文件夹)中的值放入 Excel 工作表的其中一个工作表的特定单元格中。

然后让您的 Excel 宏引用该单元格中的值。

【讨论】:

  • 顺便说一句,你不需要总是使用invoke,它会在一段时间后变得有点难看——你可以使用点语法。例如,您可以写成excelWB = excelApp.Open('myFile.xlsx');,而不是excelWB = invoke(excelApp, 'Open', 'myFile.xlsx');。对眼睛轻松很多。此外,如果您键入 excelApp. 并按 Tab,您将获得带有 excelApp 的所有可用方法和属性的列表的 tab-completion,这使得学习/浏览 Excel 对象模型变得更加容易。
  • 感谢您的建议,我一定会尝试这个,但是我在 matlab 到 excel 界面上遇到了一些问题,具体取决于使用的 PC。我现在需要在 Excel 中“重新创建”MATLAB 代码以提取一些信息,但是我正在为此苦苦挣扎,因为我的 VBA 或 matlab 经验很少,如果我向您展示我的代码,您认为您可以看看吗?
  • 如果您还有其他具体问题,请提出,包括我在内的每个人都会看看。或者,如果您点击我的简历中的链接,我可以提供咨询... :)
猜你喜欢
  • 1970-01-01
  • 2012-12-02
  • 2013-08-24
  • 2015-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-07
  • 2019-10-29
相关资源
最近更新 更多