2

我正在使用一个自定义加载项,它将函数添加到 Excel,如 UDF1(param1,param2)。

(1) 单元格中调用示例:=UDF1(param1, param2)

保存实现 UDF() 的 workbook1 时,Excel 会在每次调用 UDF() 时静默添加外接程序的路径。这可以在卸载加载项并重新打开 workbook1 时看到。

Excel 要求更新外部引用,我点击“不更新”。

(2) 新单元格内容:='\...\user\Desktop\Addin1'!UDF1(param1, param2)

保存工作簿时如何防止 Excel 保存加载项的路径?

我希望新的单元格内容 (2) 与原始内容 (1) 匹配。

(当不同的人使用相同的外接程序时,这尤其令人讨厌,分别安装在他们计算机的不同位置,因为每次工作簿都需要从每个单元格中删除“\......!”路径由其他用户打开。)

编辑:从 Excel 公式中的 UDF 中删除 AddIn 路径,并且http://www.jkp-ads.com/Articles/FixLinks2UDF.asp不是我正在寻找的,因为建议的“解决方案”是解决方法。

4

2 回答 2

1

您对问题进行了很好的研究*,并找到了您不喜欢的答案:您想做的事情是不可能的。

这就是 Excel 引用 UDF 的方式(类似地,当您引用打开与未打开工作簿中的单元格时)。

您需要一种解决方法,无论是您提供的链接中建议的方法,还是其他替代方法。

.* 这不是典型案例。

于 2015-06-16T09:03:12.090 回答
0

与往常一样,有一种方法可以使用插件中的用户定义函数 (UDF)。B.xlam让我们在我们拥有的模块中的 excel Addin-File 中有一个函数

Public Function Volume(a as Double, b as Double, c as Double)
    Volume = a * b * c
End Function

此文件的Workbook.IsAddin-Property 设置为true并存储在与使用 Excel Sheet 相同的目录中A.xlsm。此 Excel 工作表具有对文件的 VBA 引用B.xlam。如果您随后Volume在 的任何单元格中使用该函数A.xlsm,则该函数将委托给 VBA,并且如果该函数Volume存在于引用的 File 中,VBA 也会查找B.xlam参考 - 示例 到目前为止,一切都很好。如果在 Excel 的工作簿视图中显示引用(在数据功能区中),则将引用从更改B.xlam为文件A.xlsm本身。所以最后没有直接的 Excel-Reference from A.xlsmto B.xlam。唯一存在的参考是 VBA 参考。

现在,如果 Addin-FileB.xlam在 File 之前加载,A.xlsm则引用总是指打开的文件。否则,VBA 会查找原始路径,如果不存在,则会在工作簿路径中查找。

因此,通过 VBA 可以引用 UDF,并且插件可以位于任何位置,如果在使用文件之前加载或在使用 Excel 文件的同一目录中加载。

于 2020-02-06T18:43:18.387 回答