XLAM / XLA Addins:还有更好的方法吗?

时间:2011-04-19 20:05:32

标签: vba excel-vba excel

这篇文章是关于安装XLAM而不创建链接。 (每个人都讨厌链接)。考虑一下琐碎的插件:

    Public Function UDF_HELLO(x)
        UDF_HELLO = "Hello " & x
    End Function

将此代码和其他内容放入模块中并在桌面上保存为“Hello.xlam”(而不是默认的excel addins文件夹中)。接下来,在HELLO.XLAM仍处于打开状态时,使用公式

创建一个新的XLSX工作簿
      =UDF_Hello("world")
单元格A1中的

,它只在该单元格中显示“Hello world”。保存工作簿并退出Excel。现在,如果您在没有XLAM的情况下重新打开工作簿,Excel将会抱怨“链接到其他来源......”。无论您单击“更新”还是“不更新”,Excel都会在单元格A1中修改公式,如下所示:

    ='C:\Documents and Settings\tpascale\Desktop\Hello.xlam'!UDF_Hello("world")

这种“强制联动”通常是不可取的。在我的计算环境中有很多临时分析,对我们一起解决当天问题的每个XLAM强加安装方案是没有意义的。我只是想向用户分发XLAM文件,并让这些用户在需要时打开它们,而不必担心会导致公式被破坏的最轻微错误步骤。

问题:

有没有办法指示Excel永远不构建UDF的外部链接,只是在加载UDF时使用它们,否则返回#VALUEs?

4 个答案:

答案 0 :(得分:4)

我不知道如何使用.xla / .xlam加载项。

但.xll加载项不会出现此问题。 这些可以使用Excel 2010 SDK在C中创建,也可以使用免费的Excel-DNA库在VB.NET或C#等托管语言中创建。

(免责声明:我是Excel-DNA的开发人员。这个问题是我使用.xll接口制作托管UDF加载项的原因之一。)

答案 1 :(得分:1)

您可以让他们打开.xla文件并使用Auto_Open过程安装加载项。

http://www.vbaexpress.com/kb/getarticle.php?kb_id=693

excel关闭后,您可以自行添加外接程序。

oAddIn.Installed = False

您可以为用户添加一个设置,让用户在每次使用后都不要使用名为something的工作表进行卸载,然后让单元格A1等于true或false。

我没有对此进行过测试,但希望它适合您。

答案 2 :(得分:1)

虽然它没有指示Excel有关外部链接,但这应该可以解决您的问题。我自己通过创建XLAM进行了测试,将其保存到桌面,将其安装在Excel加载项中,然后在新工作簿中使用它。

步骤:

  1. 保存加载项后,请将其关闭。
  2. 转到Excel选项 - >加载项
  3. 在“管理”下拉列表中,选择“Excel加载项”,然后按“开始”
  4. 在出现的“Add-Ins'dialogue”中,点击“浏览”并导航至 您刚刚创建的加载项。选择它并点击“确定”
  5. 如果提示将加载项保存在加载项文件夹中,请选择“否”。 如果加载项文件后缀如此,选择“是”可能会导致错误 与正在使用的Excel版本不匹配。
  6. 您的加载项应显示在“可用加载项”滚动框中, 选中它的框并点击“确定”
  7. 只要您打开Excel,您的加载项就应该处于活动状态。
  8. 通过打开新工作簿并尝试使用UDF进行测试。
  9. 最佳,

答案 3 :(得分:0)

我通常通过以下方式解决此问题:

  1. 保存XLA / XLAM文件(当然在Personal文件夹之外)
  2. 在“工具-加载项”中连接到它
  3. 在当前Excel文件中编写伪宏,这些伪宏链接到XLA / XLAM文件中的那些宏/函数。

请参阅我的回复here中的详细说明。