Excel加载项UDF路径问题

时间:2014-07-24 04:57:55

标签: excel vba excel-vba excel-addins excel-udf

有关处理此问题的最佳做法的任何建议吗?

我编写了一个提供UDF(用户定义的工作表函数)的Excel加载项。一切都很好,直到一个用户将他的工作簿发送到另一个用户,或者只是尝试在多台计算机上使用工作簿,其中加载项已安装到不同的路径。

即使路径中唯一的区别是驱动器号,当在另一台计算机上打开工作簿时,旧的完整路径会出现在所有UDF前面的公式上,并且公式会返回错误。

解决这个问题的一种方法是进行搜索&替换工作簿中的所有公式,用空字符串替换路径。然后公式重置自己为当前计算机上的加载项路径。有时我必须进入VBE并运行CalculateFullRebuild以使公式起作用。虽然它有效,但对技术含量较低的用户要求很多,而且对于那些经常移动工作簿的用户来说,经常这样做很烦人。

连连呢?

另外 - COM加载项有这个问题吗?我的加载项是xla。虽然我对此感到好奇,但在这种情况下,由于COM加载项无法在Macintosh Excel上运行,我需要这个加载项才能跨平台工作。

更新:

根据要求,这是一个截图:

Screenshot showing path in formula http://i62.tinypic.com/axz68n.png

此屏幕截图显示了如果Fred将加载项放入C:\ Fred的Stuff \ Fred的Excel Stuff \ MyAddin.xla中,将他的工作簿发送给Martha,后者将其放入加载项在另一个路径中,例如C:\ Martha的Files \ Martha的Excel Files \ MyAddin.xla,Martha打开Fred发送的文件。

如果玛莎删除路径,只留下" = MyUDF()"在公式中,Excel将在Martha的路径中找到Martha计算机上的MyAddin.xla(假设她以前在Excel中安装了MyAddin.xla作为加载项),并正确解析公式。

1 个答案:

答案 0 :(得分:5)

这是Excel开发人员需要面对的众多问题之一,并且有一些解决方法,但您选择哪一个将取决于您自己的情况:

http://www.jkp-ads.com/articles/FixLinks2UDF00.asp

如果链接死亡,以下是三种建议方法的摘要:

  • 使用固定位置。
  • 不是将UDF代码保留在插件中,而是创建一个工具,将UDF例程复制到使用它的每个工作簿中。
  • 将UDF重定向到新位置。