在网络驱动器上共享 *.xlam - 调用 subs 和函数



我一直在论坛上寻找解决我下面的挑战的方法,不幸的是没有任何运气。我已经编写了一些子和函数,我需要提供给我的同事,我希望能够集中更新。为了做到这一点,在这篇精彩的文章之后,https://www.excelguru.ca/content.php?152-Deploying-Add-ins-in-a-Network-Environment,我制作了一个工作表,可以将我的代码部署到我们网络驱动器上的 *.xlam 以及用于在用户 excel 上安装附加组件的代码。为了允许用户在 *.xml 中调用 subs/functions,我添加了对需要 subs/functions 的工作簿模板的引用。

但是,由于加载项位于网络驱动器上,因此它并不总是可用,并且用户将收到编译错误"找不到项目或库"。

所以,我的问题是:

  1. 有没有办法仍然使用引用方法,但解决"找不到项目或库"错误?
  2. 用户是否有更好的方法来从加载项调用函数?
  3. 还有一个大问题:我应该以完全不同的方式共享和更新代码吗?

此致敬意 克内克塞

因为:

  1. 一个外接程序可以加载另一个外接程序。Workbooks.Open(Filename:=pathToFile & addinFilename, ReadOnly:=True(
  2. 网络资源并不总是可访问的。

可以尝试在客户端计算机上使用存根加载项。

此存根可以:

  1. 检查网络上是否有所需的加载项可用,并在可能的情况下加载。
  2. 选项 A:提供存根函数/子函数/子函数,这些
  3. 函数/子函数在所需外接程序中的实际例程可用时调用它,否则返回合适的失败状态或默认消息。
  4. 选项 B:自动将所需的加载项复制到本地计算机上的缓存,并根据需要添加加载缓存副本。

通过保持存根简单且经过良好测试,无需经常更改它,因此您不会失去将主加载项保留在网络上的全部好处。

请注意,无需将联网加载项添加到 AddIns/AddIns2 集合;只需使用 Workbooks.Open(pathToAddIn, ReadOnly:=True(。以这种方式打开时,它不会显示在 ‹‹文件 › 选项 › 加载项›› 中。因此,如果要在不关闭 Excel 的情况下卸载或重新加载加载项,则存根加载项应提供执行此操作的方法,或者需要使用 VBA 执行此操作(例如在 VBA 编辑器的"即时"窗口中(。

最新更新