加载项function在复制的工作表中不起作用

我有一个Addin,它定义了一些在Excel中不可用的math函数。 我已经在模板工作表(位于模板工作簿)中安装并正常工作,但是当我将包含模板工作簿中的function的模板工作表复制到新的工作簿中时,外挂程序似乎停止工作并给我一个名字?” 调用函数的单元格中的错误。

有谁知道发生了什么事? 提前致谢

编辑:我应该更具体。 Add in用于用户定义函数(UDF),位于xla文件中。 上面,当我提到一个“模板工作簿”时,这实际上是不正确的。 它是一个正常的工作簿(.xls),我们根据需要将单个工作表复制到一个新的工作簿中。 我会把这个叫做“Master”的工作簿叫做“模板”。

由于我们有许多不同的“主”工作簿,我们从中定期提取特定工作表,所以我试图自动select工作表进行复制(使用工作表中的checkbox)。 一旦勾选了所有必要的checkbox,就会按下一个button来创build一个新的工作簿,然后从各个主工作簿中导入所有需要的工作表。 在这个新的工作表中,UDF不起作用。

随着下面的响应者的一些提示和广泛的网页search,问题在于UDF函数引用本身。 让我解释:

UDF被定义为:

公共函数Ber(ByVal x As Double)作为双端函数

这在“Master”TPLATE.xls工作簿中工作正常。 当我从这里复制一个包含具有公式的单元格的表格时,在新表格中说“= Ber(A1)”,公式变成:“= TPLATE.xls!Ber(A1)”。

如果我然后手动租用在单元格的公式正确的UDF,它的作品。 我不想这样做。

我find了一个很有希望的解决scheme,但似乎无法得到它的工作: http : //www.jkp-ads.com/Articles/FixLinks2UDF00.asp (注:点击绿色框中的箭头继续文章)

有没有办法确保复制的工作表中的UDF保留对Addin的正确引用?

我已经尝试了以下内容:

  1. 包括代码来查找和replace“=”符号和“Ber(A1)”之间的任何文本,只用“= Ber(A1)” – >不起作用

  2. 从上面的链接解决scheme。 – >不能得到它的工作。

再次感谢您的帮助!

更好的解决scheme是将UDF代码放在XLA / XLAM插件中,而不是放在工作表模板中。 请参阅此链接的说明

http://www.cpearson.com/excel/createaddin.aspx

我想我已经find了一个解决scheme,并希望从别人的一些input:

我创build了一个例程来更新UDF所在的链接。

Sub updatelinks() ActiveWorkbook.ChangeLink Name:= _ "C:\Users\user.1\AppData\Roaming\Microsoft\AddIns\BesselAddIn.xla", NewName _ :=Application.UserLibraryPath & "BesselAddIn.xla", Type:=xlExcelLinks End Sub 

当我刚把这个工作表导入到新的工作簿(当工作表仍处于活动状态)之后调用这个函数时,它似乎为一些计算机做了这项工作,但并不是全部。

这一切都让我觉得,当调用UDF时,隐藏在Excel内的机器包含但通常不会显示Addin位置的完整path名。

这有什么意义吗?