防止Excel将UDF路径保存到公式单元格

时间:2015-06-16 08:21:42

标签: excel hyperlink path add-in udf

我正在使用自定义加载项,它将功能添加到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 formulahttp://www.jkp-ads.com/Articles/FixLinks2UDF.asp不是我想要的,因为建议的“解决方案”是解决方法。

2 个答案:

答案 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也会查找。 References-Example 到现在为止还挺好。如果在Excel的工作簿视图中显示了引用(在数据功能区中),则将引用从B.xlam更改为文件A.xlsm本身。因此,最终没有从A.xlsmB.xlam的直接Excel参考。存在的唯一参考是VBA参考。

现在,如果在文件B.xlam之前加载了加载项文件A.xlsm,则引用始终引用打开的文件。否则,VBA将查找原始路径,如果不存在,则将在工作簿路径中查找。

这样,通过VBA可以引用UDF,并且该加载项可以位于任何位置(如果在使用方文件加载之前或在使用方Excel文件的同一目录中进行加载)。