UDF 才有效。如何让 Excel 将加载项自然链接到电子表格?

问题描述 投票:0回答:1

我在 Microsoft 365 中使用 Excel,并且有几个用 MS VBA 编写的 UDF,并保存在位于 C:\Users\username\AppData\Roaming\Microsoft\AddIns 的 *.xla 文件中。此外,该文件已作为加载项成功加载,因为我可以在“开发人员”选项卡的“Excel 加载项”图标上提供的加载项窗口中看到它。我还可以从 Visual Basic 窗口查看模块中的代码。

问题是 UDF 的所有实例都有以下错误:#NAME?。

但是,如果我先打开 *.xla 文件(这会生成一个完全空白的电子表格,即没有单元格),然后打开包含我的 UDF 的已保存电子表格,则所有 UDF 都可以正常工作。虽然这是一种解决方法,但有点笨拙,我想要一个更干净的解决方案。

我的期望是因为我的 *.xla 文件作为 Excel 插件加载,它自然可以在任何 Excel 电子表格中使用。

我还尝试取消选中打开电子表格时创建的加载项,但当我重新打开电子表格时,UDF 的每个实例都会根据上面提到的 *.xla 文件的路径进行更改。除非输入完整路径,否则 UDF 的新实例将无法工作。例如:
='C:\Users\用户名\AppData\Roaming\Microsoft\AddIns\myAddIn.xla'!UDFname(E9,E10).

excel vba user-defined-functions add-in
1个回答
0
投票

我对这个问题很好奇,并回到了已故但很棒的Chip Pearson的网站。按照他页面上的说明,我能够完成您所坚持的事情。看看你的问题(顺便说一句,做得很好),看起来你确实已将其保存到正确的位置,但我会仔细检查,因为这似乎最有可能出现错误。

对于它的价值,以下是我能够使 UDF 从初始加载空白文件中显示为可识别公式的方法:

  • 下载芯片的测试文件并解压zip
  • 在 Excel 中 → 开发人员选项卡 → Excel 附加组件(不是 COM!)→ Click on browse
  • 打开的文件夹就是
    xla
    所在的位置,所以我将 Chip 的文件复制到那里
  • 我关闭并重新打开 Excel,然后查看 Charles 模块中的代码,该模块没有任何 UDF,因此我添加了一个公式
    thanksPearson
    并点击保存。模块中的整个代码保存在下面的
    xla
  • 我保存并关闭 Excel,然后重新打开,公式
    =thanksPerason("boom")
    按预期执行。

Option Explicit

Sub MacroToRunOne()
    Dim S As String
    S = "Hello World From One:" & vbCrLf & _
        "This Add-In File Name: " & ThisWorkbook.FullName
    MsgBox S
End Sub

Function thanksPerason(anINput As Variant) As String
    thanksPerason = " what the function is this" & anINput
End Function


Sub MacroToRunTwo()
    Dim S As String
    S = "Hello World From Two:" & vbCrLf & _
        "This Add-In File Name: " & ThisWorkbook.FullName
    MsgBox S
End Sub

记住皮尔逊

如果不太明显,我是 Chip Pearson 的作品的粉丝,他于 2018 年因车祸过早去世。如果您仔细阅读他的网站,您会发现这绝对是一部写得很好、易于理解的解释的杰作,其中的示例“被誉为比微软曾经制作的任何产品都“有用得多”。反正。考虑到他为世界带来的价值,他只是一个值得时不时大声疾呼的人。

© www.soinside.com 2019 - 2024. All rights reserved.