我编写了一个提供 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 作为加载项),并正确解析公式。