我有一个xla文件,将部署到组织中的许多用户作为Excel加载项。我的意图是将其部署到“应用程序数据\ mycompany”中的用户“文档和设置”文件夹中的目录。 (实际上这一切都通过包装器在本地复制最新版本的XLA,并将其安装为Excel加载项)。

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

我的信念直到现在,只要XLA安装为加载项,就可以使用这一点“刚刚应对”这一点,但这种情况似乎不是这种情况。

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

谢谢。

有帮助吗?

解决方案

没有好方法来做这件事。我将XLA文件放在网络共享,而不是本地,并通过UNC路径安装它们。这只适用于我,因为每个人都可以访问股票,这可能不是你的案例。这是其他一些替代方案

http:// www.dailydoseofexcel.com / archives / 2008/06 / 02 /定影 - 链接到UDFS-In-AddIn /

其他提示

我只需删除具有这样的子的路径:

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
.

您可以指定基于环境变量的路径吗?例如。%APPDATA%\MyCompany

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

如果xla必须在本地驱动器上 - 不确定这是否可以工作,但打开事件上的xls可以检查修复任何路径并安装/安装一个xla - 如果它知道它的位置。但是,如果您通过Internet通过电子邮件发送XLS,则XLS的ON开放事件可以检查XLA是否可用并置于讲述用户要做的消息框 - 安装此XLA,这将是一个单独的附件。 XLA可以作为其开放事件的一部分清理任何路径 - 只是一些想法。

另一个可能性是打开事件上的XLA可以在打开事件上修改XLS,以便如果该XL分布,XLS将能够检查XLA是否可用。棘手。

It's a poor oversight that makes add-ins barely manageable for shared use. Other than this, using .XLAM add-ins is a good way to avoid having to have macro-enabled spreadsheets (the shared spreadsheet can be distributed without macros and the macros can reside in an .XLAM)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top