6

我有一个 XLA 文件,该文件将作为 Excel 加载项部署到组织中的许多用户。我的意图是将其部署到“Application Data\MyCompany”中用户的“文档和设置”文件夹中的目录中。(事实上​​,这一切都是通过一个在本地复制最新版本的 XLA 并将其安装为 Excel 插件的包装器进行的)。

但是,如果用户创建引用此 XLA 中定义的函数的工作表,则 Excel 似乎将 XLA 的绝对路径存储在函数调用中。因此,如果用户将工作表发送给同事,Excel 无法解析函数,因为他们的 XLA 副本驻留在不同的绝对路径中(因为他们的用户名是绝对路径的一部分)。

到目前为止,我的信念是只要将 XLA 作为加载项安装,Excel“就可以解决”这个问题,但情况似乎并非如此。

我真的需要为所有用户的加载项强制执行相同的绝对路径吗?这在单个组织内是可能的,但老实说,我不敢相信这是真的,因为它严重阻碍了 XLS 文件的共享。

谢谢。

4

5 回答 5

5

没有好的方法可以做到这一点。我将 xla 文件放在网络共享而不是本地,并通过 UNC 路径安装它们。这仅对我有用,因为每个人都可以访问共享,而您可能并非如此。这里有一些其他的选择

http://www.dailydoseofexcel.com/archives/2008/06/02/fixing-links-to-udfs-in-addins/

于 2010-07-22T15:00:39.887 回答
2

我只是用一个像这样的子删除路径:

Sub RemoveXlaPath()
'
' Goal: delete the path reference to the add-in, i.e. everything before and including the '!'
' ='C:\Program Files (x86)\Microsoft Office\Office14\LIBRARY\populator.xlam'!famedata(...)
'
    Cells.Replace What:="'C:\*xla*'!", Replacement:="", _
                    LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
                    SearchFormat:=False, ReplaceFormat:=False
End Sub
于 2013-07-02T09:05:28.897 回答
0

你能指定一个基于环境变量的路径吗?例如%APPDATA%\MyCompany

于 2010-07-22T12:48:23.123 回答
0

我所做的是,如果我给用户一个 XLS,它在其打开事件中有一些代码 - 安装 XLA 作为其打开事件的一部分。它还会卸载旧版本(如果有的话)(删除和命令栏)。这个自我分配。理论上它可以清理任何路径。这假设每个人都可以访问一些共享驱动器,这可以防止他们将 XLA 复制到本地驱动器。或者,通过共享驱动器上的 XLA 向他们发送 XLA 的快捷方式。如果可能,您不希望在本地驱动器上使用 XLA。

如果 XLA 必须在本地驱动器上 - 不确定这是否可行,但打开事件的 XLS 可以检查修复任何路径并安装/安装 xla - 如果它知道它在哪里。但是,如果您通过 Internet 向 XLS 发送电子邮件,则 XLS 的打开事件可以检查 XLA 是否可用并显示一个消息框,告诉用户该怎么做 - 安装此 xla,这将是一个单独的附件。作为开放活动的一部分,XLA 可以清理任何路径 - 只是一些想法。

另一种可能性是开放事件中的 XLA 可以修改开放事件中的 XLS,以便如果分发了该 XLS,则 XLS 将能够检查 XLA 是否可用。棘手。

于 2013-11-29T02:09:16.577 回答
0

这是一个糟糕的疏忽,使得加载项几乎无法管理以供共享使用。除此之外,使用 .XLAM 插件是避免启用宏的电子表格的好方法(共享电子表格可以在没有宏的情况下分发,并且宏可以驻留在 .XLAM 中)

于 2017-07-28T13:55:43.877 回答