从Excel公式中的UDF中删除AddIn路径

时间:2011-06-20 16:54:38

标签: add-in user-defined-functions excel-dna

我的插件是xla,现在我使用的是excelDNA,所以它变成了xll, 当我打开以前版本的My addin内置的电子表格时, 对于UDF,它显示myUDF的路径为xla。例如“C:\ Program Files \ Installation folder \ MyUDFs.xla!MyUDF”, 当我单击编辑链接并将源更改为“C:... \ MyUDFs.xll”时 我有一个弹出窗口说 “Excel无法更新此工作簿中的一个或多个链接。要更新链接,请打开所有链接源文件(单击”数据“选项卡上的”编辑链接“)。 确保所有计算都更新。按F9“ 我单击OK,然后MyUDF的路径从xla变为xll,例如C:\ Program Files \ Installation文件夹\ MyUDFs.xll!MyUDF 对于客户来说,这将打破以前版本中构建的所有电子表格(可能是100+)。 我知道我可以写一个VBA代码来删除所有MyUDF的路径。但它并不理想,因为用户必须打开电子表格并将代码放入电子表格并运行。

我想知道客户是否有更好/更方便的方法来解决问题 谢谢

2 个答案:

答案 0 :(得分:2)

在内部,Excel为.xla函数存储不同的信息 和.xll函数。这不是那么容易,所以你可以做 一个与输入的函数兼容的.xll sheet作为.xla中的函数。

您还可以通过稍微在.xmlx文件中查看来查看Excel如何存储此信息。

这次威尔莫特的讨论可能是相关的: http://www.wilmott.com/messageview.cfm?catid=10&threadid=79763 对于您的情况,我建议的最好的方法是添加转换宏 您的.xll,并让用户按下“修复”按钮 打开尚未转换的电子表格。

答案 1 :(得分:0)

这是我最后使用的解决方案。我保留了我的xla插件,在xll中,我使用相同的sigature注册相同的MyUDF(同时,xll中不支持可选参数,但在我的xla中使用,并设置IsHidden = true)。因此在插入函数列表中只显示一个MyUDF。当您键入= MyUDF并单击函数向导时,xll中的版本将显示在函数参数窗口中。在Excel 2007中,当我键入= MyUDF时,下拉列表中没有任何功能。在Excel 2010中,当我键入= MyUDF时,会有一个下拉列表。因此,该解决方案在Excel 2010中运行得更好。