2014-03-06 53 views
0

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

有谁知道发生了什么事?在此先感谢

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

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

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

的UDF定义为:

公共功能BER(BYVAL X作为双人间)作为双 端功能

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

如果我然后手动租用Cell的公式中正确的UDF,它的工作原理。我不想这样做。

我发现,一旦可行的解决方案,但不能似乎得到它的工作: http://www.jkp-ads.com/Articles/FixLinks2UDF00.asp (注:绿色框中点击箭头继续文章)

有什么方法来确保复制工作表中的UDF保留对Addin的正确引用?

我曾尝试以下:

  1. 包括代码查找并只需更换 “=” 号和之间的任何文本 “BER(A1)” “= BER(A1)” - >不起作用

  2. 上述链接的解决方案。 - >不能得到它的工作。

再次感谢您的帮助!

+0

你有什么样的外挂?某种类型的UDF,COM,文档级别?您正在获取的错误意味着Excel无法找到您正在使用的某个引用。它可能是一个命名的范围错误引用丢失(你是否有任何工作簿命名的范围定义,没有得到复制?)或它可能是它无法找到你的插件(函数调用或某事)。 –

回答

1

我想我已经找到了解决办法,并想从别人的一些输入:

我创建了一个程序来更新其中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位置的完整路径名。

这是否有意义?

+0

这是正确的:完整路径在那里但隐藏。所以只要XLA的路径没有改变,这工作就OK了。因此,如果您需要在不同的计算机上进行这项工作,则XLA应该位于网络共享上,或始终位于相同的硬编码位置,例如C:\ Myaddins \ BesselAddin.xla。请注意,XLL中的UDF函数不会遇到此路径问题。 –

1

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

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

+0

谢谢Charles。我编辑了我的问题,以提供更多关于我如何构建事物的细节。 – olshie

相关问题