Excel加载项UDF路径问题

Gre*_*ern 5 excel vba excel-addins excel-udf

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

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

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

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

建议?

另外 - COM加载项有这个问题吗?我的加载项是xla.虽然我对此感到好奇,但在这种情况下这是一个没有实际意义的问题,因为COM加载项在Macintosh Excel上不起作用,我需要这个加载项才能跨平台工作.

更新:

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

屏幕截图显示了公式http://i62.tinypic.com/axz68n.png中的路径

这个截图显示了如果Fred将加载项放在C:\ Fred的Stuff\Fred的Excel Stuff\MyAddin.xla中,将他的工作簿发送给Martha,后者将相同的加载项放在另一个路径中,例如C: \玛莎的文件\玛莎的Excel文件\ MyAddin.xla,玛莎打开弗雷德发送的文件.

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

Tim*_*Tim 5

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

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

如果链接死亡,这里是三个建议方法的摘要:

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

  • @Tim - 我添加了一些关于链接包含内容的摘要,以避免仅接近链接,并希望让你的答案更具弹性.如果您觉得我在嘴里说话,请随时调整. (2认同)