matlab - 在Matlab中使用Excel的用户定义函数出错

标签 matlab excel excel-formula vba

Possible Duplicate:
Excel Addin Error #NAME?

我认为这是对我之前报告的有关 Excel 中用户定义函数的问题的后续查询。

手动使用时,我可以在 Excel 中使用该函数,但是当我使用 Matlab 使用 xlswrite 写入 Excel 文件时,会出现错误 #NAME?

Using the function manually

我附上了手动输入和通过 Matlab 使用该函数时的屏幕截图。

Using xlswrite in Matlab

谢谢

编辑:

非常感谢。我已将 VBA 函数存储为 Excel 插件:

C:\Users\Administrator\AppData\Roaming\Microsoft\Addins

以下是我在自动化中使用时未加载 Excel 加载项的情况:

http://www.excelforum.com/excel-programming/472145-calling-excel-macro-from-vb-6-app-problem.html

我在这里附上 chi_squared() 的一小段代码:

Function Chi_Squared(act, exp, Optional df)

这就是我在 Matlab 中写入 Excel 文件的方式:

Formula_chisqr={[ '=chi_squared(' 'O2:O22' ',' 'M2:22' ')']};

[状态,消息] = xlswrite1(ExcelFilename,Formula_chisqr,sheetname, Location_Agg);

我还尝试按照建议给出完整路径。但没有成功。

谢谢

最佳答案

您必须指定定义 UDF 的工作簿。即使您的功能是您的 PERSONAL.XLSB 文件。仅当 UDF 定义在您使用它的同一文件中时,您才不必执行此操作。

例如,

='myFunctions.xlsb'!chi_squired(O2:O21,P2:P21)

如果 myFunctions.xlsb 未打开,您可能需要指定文件的完整路径。

如果您希望能够在不指定文件名的情况下调用任何文件中的UDF,则需要将该文件另存为Add-in,然后在选项 - 加载项 - 管理加载项中启用它.


另一个想法:当您使用 XLSWRITE 时,请提供扩展名为 XLSX 的文件名,例如 test.xlsx,而不仅仅是 test。默认情况下,MATLAB 以旧格式保存带有 XLS 扩展名的文件。看起来当您在较新版本的 Excel (2007/2010) 中打开此类文件时,兼容模式不允许运行宏或 UDF。

关于matlab - 在Matlab中使用Excel的用户定义函数出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10362055/

相关文章:

excel - 文本到时间(毫秒)

Excel countif 和 sumif 一起使用

Matlab oop - 如何检查两个对象是否相等

sql-server - 使用 Excel VBA 中的 ADO 通过网络连接到 SQL Server

Matlab:如何更改矩阵的存储方式?从 1x1x3 到 1x3?

Excel 2010 - 从不同工作簿而不是相邻单元格复制粘贴时出现错误

vba - 工作表中的公式和 VBA 的工作方式不同

excel - 使用Excel,如何在另一个单元格的公式中使用空格键清除的单元格

image - 在内存中渲染 MATLAB 图

c - 通过串行端口发送整数并打印到 LCD