我正在使用自定义加载项,它将功能添加到Excel,如UDF1(param1,param2)。
(1)单元格中的示例调用: = UDF1(param1,param2)
当保存实现UDF()的workbook1时,Excel会以静默方式将加载项的路径添加到UDF()的每次调用中。卸载加载项并重新打开工作簿1时可以看到这一点。
Excel要求更新外部参考,我点击“不要更新”。
(2)新单元格内容:='\ ... \ user \ Desktop \ Addin1'!UDF1(param1,param2)
如何防止Excel在保存工作簿时保存加载项的路径?
我希望新的单元格内容(2)与原始内容(1)匹配。
(当不同的人使用相同的插件分别安装在他们的计算机的不同位置时,这尤其令人讨厌,因为它需要每次都从每个单元格中删除'\ ......!'路径工作簿由另一个用户打开。)
修改:Remove AddIn path from UDF in Excel formula和http://www.jkp-ads.com/Articles/FixLinks2UDF.asp不是我想要的,因为建议的“解决方案”是解决方法。
答案 0 :(得分:1)
你研究得很好*,你找到了你不喜欢的答案:你想做什么是不可能的。
这就是Excel引用UDF的方式(类似地,当你在开放式工作簿和非开放式工作簿中引用单元格时)。
您需要一种解决方法,无论是您提供的链接中提出的解决方案,还是替代方案。
。*这不是典型案例。
答案 1 :(得分:0)
一如既往,有一种使用外接程序中的用户定义函数(UDF)的方法。
让我们在我们拥有的模块的excel附加文件B.xlam
中拥有一个功能
Public Function Volume(a as Double, b as Double, c as Double)
Volume = a * b * c
End Function
此文件的Workbook.IsAddin
-属性设置为true
,与使用的Excel工作表A.xlsm
存储在同一目录中。该Excel工作表具有对文件B.xlam
的VBA参考。如果随后在Volume
的任何单元格中使用函数A.xlsm
,则该函数将委派给VBA,并且如果函数Volume
存在于引用的文件B.xlam
中,VBA也会查找。
到现在为止还挺好。如果在Excel的工作簿视图中显示了引用(在数据功能区中),则将引用从B.xlam
更改为文件A.xlsm
本身。因此,最终没有从A.xlsm
到B.xlam
的直接Excel参考。存在的唯一参考是VBA参考。
现在,如果在文件B.xlam
之前加载了加载项文件A.xlsm
,则引用始终引用打开的文件。否则,VBA将查找原始路径,如果不存在,则将在工作簿路径中查找。
这样,通过VBA可以引用UDF,并且该加载项可以位于任何位置(如果在使用方文件加载之前或在使用方Excel文件的同一目录中进行加载)。