如何使XLAM UDF调用可移植?

时间:2011-10-14 20:34:52

标签: excel excel-2007 excel-2010 excel-interop excel-addins

似乎当我在XLAM文件中调用UDF时,XLAM文件的路径嵌入在电子表格中。当我从另一台机器(安装了相同的XLAM插件,只安装到不同的路径)打开电子表格时,Excel会抱怨“此工作簿包含指向其他数据源的链接......”这似乎不是一个XLL中的UDF问题。有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

这种行为是在Excel中实现Addin UDF的方式的结果。

有三种方法可以缓解这个问题:

使用强制特定路径的安装程序

向XLAM添加一些代码,检查打开的每个工作簿的链接,如果链接是您的XLAM,但是在不同的路径中,它会执行查找和替换以便更正路径。

将XLAM UDF转换为XLL(如果VBA转换为VB.Net并使用Excel DNA或Addin Express制作VB.Net XLL)

答案 1 :(得分:0)

我知道我迟到了十年,但如果你把它放在工作簿中。在你共享的文件上打开代码,它们将需要是 xlsm 文件,请记住这会将公式中的所有外部链接更改为本地插件路径:

Sub AddInExternalLinkFix()
    Var = ActiveWorkbook.LinkSources(xlExcelLinks)
    Nwname = Application.AddIns.Item("YourAddInName").FullName
    If Not IsEmpty(Var) Then
        For iCounter = 1 To UBound(Var)
                ActiveWorkbook.ChangeLink Name:=Var(iCounter), newname:=Nwname, Type:=xlLinkTypeExcelLinks
        Next iCounter
    End If
End Sub