如何使 XLAM UDF 调用可移植?
看来,当我在 XLAM 文件中调用 UDF 时,XLAM 文件的路径会嵌入到电子表格中。当我从另一台计算机(安装了相同的 XLAM 加载项,只是安装到不同的路径)打开电子表格时,Excel 抱怨“此工作簿包含指向其他数据源的链接...”这似乎不是一个XLL 中的 UDF 存在问题。有办法解决这个问题吗?
It seems that when I call a UDF in an XLAM file, the path to the XLAM file is embedded in the spreadsheet. When I open the spreadsheet from another machine (which has the same XLAM add-in installed, just installed to a different path) then Excel complains "This workbook contains links to other data sources..." This doesn't seem to be a problem with UDFs in XLLs. Is there a way around this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
此行为是 Addin UDF 在 Excel 中实现方式的结果。
有 3 种方法可以缓解该问题:
使用强制使用特定路径的安装程序
将一些代码添加到 XLAM,以检查每个打开的工作簿的链接,以及该链接是否指向您的 XLAM,但在不同的路径中,它会进行查找和替换以便修正路径。
将 XLAM UDF 转换为 XLL(如果 VBA 转换为 VB.Net 并使用 Excel DNA 或 Addin Express 制作 VB.Net XLL)
This behaviour is a consequence of the way Addin UDFs are implemented in Excel.
There are 3 approaches to alleviating the problem:
Use an installer that forces a particular path
Add some code to the XLAM that inspects Links for each workbook opened and if the link is to your XLAM but in a different path it does a find and and replace so that the path is corrected.
Convert your XLAM UDFs to XLLs (if VBA convert to VB.Net and use Excel DNA or Addin Express to make a VB.Net XLL)
我知道我晚了十年,但如果你把它放在工作簿中。在你共享的文件上打开代码,它们将需要是 xlsm 文件,请记住,这会将公式中的所有外部链接更改为本地插件小路:
I know I'm ten years late but if you put this in Workbooks.Open code on your files you are sharing, they will then need to be xlsm files, just bear in mind this will change all external links in formulas to the local addin path: