可能重复:
Excel Addin Error #NAME?
我认为这是对我之前报道的有关Excel中用户定义函数的问题的后续查询。
我可以在手动使用Excel时使用该功能,但是当我使用xlswrite使用Matlab写入excel文件时,它会出错[{1}}
手动输入时和通过Matlab使用该功能时,我附上了两者的屏幕截图。
由于
编辑:
非常感谢。我已将VBA函数存储为Excel插件:
C:\用户\管理员\应用程序数据\漫游\微软\加载项
以下是我在自动化中使用时未加载的Excel加载项的信息:
http://www.excelforum.com/excel-programming/472145-calling-excel-macro-from-vb-6-app-problem.html
我在这里附上chi_squared()代码的小片段:
#NAME?
这是我在Matlab中写入excel文件的方式:
Formula_chisqr = {['= chi_squared(''O2:O22'',''M2:22'')']};
[status,message] = xlswrite1(ExcelFilename,Formula_chisqr,sheetname,Location_Agg);
我也尝试按照建议给出完整的路径。但它没有用。
由于
答案 0 :(得分:1)
您必须指定UDF定义的工作簿。即使你的功能是你的PERSONAL.XLSB文件。只有在使用UDF的同一文件中定义了UDF时,才必须这样做。
例如,
='myFunctions.xlsb'!chi_squired(O2:O21,P2:P21)
如果未打开myFunctions.xlsb
,您可能需要指定文件的完整路径。
如果您希望能够在任何文件中调用UDF而不指定文件名,则需要将文件另存为加载项,然后在Options - Add-ins - Manage Add-ins
中启用它。
另一个想法:当您使用XLSWRITE时,提供带有扩展名XLSX的文件名,例如test.xlsx
,而不仅仅是test
。默认情况下,MATLAB以旧格式保存XLS
扩展名的文件。看起来当您在较新版本的Excel(2007/2010)中打开此类文件时,兼容模式不允许运行宏或UDF。
答案 1 :(得分:1)
当您将Excel作为COM服务器打开时,默认情况下不会加载UDF和加载项。因此,如果要使用Excel文件的加载项,则需要先加载加载项。
以下是Matlab中的小代码片段,它在打开Excel文件之前加载加载项。
Excel = actxserver ('Excel.Application');
Excel.Workbooks.Open('C:\YourAddInFolder\AddInNameWithExtension');
Excel.Workbooks.Item('AddInNameWithExtension').RunAutoMacros(1);
File='C:\YourFileFolder\FileName';
if ~exist(File,'file')
ExcelWorkbook = Excel.Workbooks.Add;
ExcelWorkbook.SaveAs(File,1);
ExcelWorkbook.Close(false);
end
Excel.Workbooks.Open(File);
来源:Mathworks