首页 > 解决方案 > 如何引用保存在 Excel 2016/2019 中个人宏文件夹之外的 .XLAM 插件中的 Excel 宏(不是函数)?

问题描述

我们可以使用自定义函数 (UDF) 创建一个 .XLAM 插件。一旦我们将 Excel 连接到插件,就可以从另一个工作簿中调用这些 UDF,而不管插件的保存位置(甚至在 Personal Macros 文件夹之外)。

但是不能对保存在同一个 .XLAM 文件中的宏(子过程)执行相同的操作。根据我的研究和试验,如果插件保存在 Personal Macros 文件夹中,似乎可以正确调用子程序。但如果插件保存在其他地方,按下 Alt-F8 后宏不会显示在宏列表中。

有没有解决的办法?我们需要将插件保存在 C:\OneDrive\Macros\Addin.xlam 中,因为插件会经常更新,所以当每个人都通过 OneDrive 自动更新它时,这样就省去了麻烦。

我们正在使用 Excel 2016 和 2019。

标签: excelvbauser-defined-functionsadd-in

解决方案


经过几周的研究和尝试不同的方法,我找到了最好的方法如下:

  1. 确保将宏源(例如 MyMacros.xlsm)保存为 MyMacros.xlam,以便加载项包含最新的宏和函数。

  2. 确保 MyMacros.xlam 加载项已在单击文件 - 选项(或 Alt - F、T)加载项 - 管理 Excel 加载项 - Go (G) 中连接

  3. 在第二个 Excel 文件(比如说 MyExcel.xlsm)中,打开 VBA 编辑器 (Alt-F11)。选择 MyMacros.xlam 项目并将名称重命名为 MyMacros 以使其不同(图片) 在我的示例图片中,MyMacros 是 FreelensiaMacros。

  4. 如果您打开了多个 XL 文件,请单击左侧 VBA 项目列表窗格中的 MyExcel 项目(不是 MyMacros!)。然后转到工具 - 参考并从列表中选择 MyMacros。您现在应该在左侧的 VBA 项目面板中看到一个新的引用(图片)

在此处输入图像描述

5.,创建一个名为 CallMyMacrosMod 的模块,并使用 Application.Run 从 MyMacros.xlam 文件中键入几个宏名称,例如:

   Sub FormatTables()
     Application.Run "MyMacros.FormatTables"
   End Sub

在 MyMacros.xlsm 文件中构造文本很方便,该文件本身存储命令以调用所有宏。然后,您可以复制并粘贴到 Word(以避免引号问题),然后从 Word 复制并粘贴到此 VBA 编辑器中。

在此处输入图像描述

  1. 保存并关闭 VBA 窗口。您现在可以从 MyExcel 文件的宏列表中调用 MyMacros 宏,而无需打开 MyMacros,只需键入 Alt-F8。

在此处输入图像描述

  1. 保存并关闭您的 XL 文件。

资料来源: https ://www.myonlinetraininghub.com/calling-vba-in-add-ins-from-vba-modules


推荐阅读