【问题标题】:Prevent Excel from saving UDF path to formula cells防止 Excel 将 UDF 路径保存到公式单元格
【发布时间】:2015-06-16 08:21:42
【问题描述】:

我正在使用一个自定义加载项,它将函数添加到 Excel,例如 UDF1(param1, param2)。

(1) 单元格中的示例调用: =UDF1(参数1,参数2)

保存实现 UDF() 的 workbook1 时,Excel 会在每次调用 UDF() 时静默添加外接程序的路径。这可以在卸载加载项并重新打开工作簿1 时看到。

Excel 要求更新外部引用,我点击“不更新”。

(2) 新单元格内容:='\...\user\Desktop\Addin1'!UDF1(param1, param2)

保存工作簿时如何防止 Excel 保存 Add-in 的路径?

我希望新的单元格内容 (2) 与原始内容 (1) 匹配。

(当不同的人使用相同的插件时,这尤其烦人,分别安装在他们计算机的不同位置,因为它需要每次从每个单元格中删除'\......!'路径工作簿已被其他用户打开。)

编辑:Remove AddIn path from UDF in Excel formulahttp://www.jkp-ads.com/Articles/FixLinks2UDF.asp 不是我想要的,因为建议的“解决方案”是解决方法。

【问题讨论】:

    标签: excel hyperlink path add-in udf


    【解决方案1】:

    您对问题进行了很好的研究*,并找到了您不喜欢的答案:您想做的事情是不可能的。

    这就是 Excel 引用 UDF 的方式(类似地,当您引用打开和未打开工作簿中的单元格时)。

    您需要一种解决方法,无论是您提供的链接中建议的方法,还是其他替代方法。

    .* 这不是典型的情况。

    【讨论】:

    • 虽然总是很难证明不存在干净的解决方案,但您已经证实了我的预期......
    • @user3641140 - 同意 100%。我以前也以同样的精神问过问题。
    • 但是 - 这可能是一个开发环境问题吗? IE。有没有办法通过在 Visual Studio / C# 中创建加载项而不是 Excel 集成的 VBA 编辑器来解决问题? (我知道存在不存在上述问题的加载项。毕竟,加载项的目的不就是分发代码吗...?)
    【解决方案2】:

    与往常一样,有一种方法可以使用插件中的用户定义函数 (UDF)。 让我们在我们拥有的模块中的 excel Addin-File B.xlam 中有一个函数

    Public Function Volume(a as Double, b as Double, c as Double)
        Volume = a * b * c
    End Function
    

    此文件的 Workbook.IsAddin-Property 设置为 true,并存储在与使用 Excel 工作表 A.xlsm 相同的目录中。此 Excel 工作表具有对文件 B.xlam 的 VBA 引用。如果您随后在A.xlsm 的任何单元格中使用函数Volume,则该函数被委派给VBA,并且如果函数Volume 存在于引用的文件B.xlam 中,VBA 也会查找。 到现在为止还挺好。如果在 Excel 的工作簿视图中显示引用(在数据功能区中),则将引用从 B.xlam 更改为文件 A.xlsm 本身。所以最后没有从A.xlsmB.xlam 的直接Excel-Reference。唯一存在的引用是 VBA 引用。

    现在,如果加载项文件 B.xlam 在文件 A.xlsm 之前加载,则引用始终指向打开的文件。否则 VBA 会查找原始路径,如果不存在,则会在工作簿路径中查找。

    这样,UDF 可以通过 VBA 引用,并且插件可以位于任何位置,如果在使用文件之前加载或在使用 Excel 文件的同一目录中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      • 2013-08-08
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多