5

我编写了一个提供 UDF(用户定义的工作表函数)的 Excel 插件。

一切都很好,直到一个用户使用这些功能将他的工作簿发送给另一个用户,或者只是尝试在多台计算机上使用该工作簿,其中加载项已安装到不同的路径。

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

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

还有——COM插件有这个问题吗?我的加载项是 xla。虽然我对此感到好奇,但在这种情况下这是一个有争议的问题,因为 COM 插件在 Macintosh Excel 上不起作用,我需要这个插件才能跨平台工作。

更新:

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

屏幕截图显示公式中的路径

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

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

4

1 回答 1

5

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

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

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

  • 使用固定位置。
  • 您无需将 UDF 代码保存在插件中,而是创建一个工具,将 UDF 例程复制到使用它的每个工作簿中。
  • 将 UDF 重定向到新位置。
于 2014-09-09T04:28:20.437 回答