【发布时间】:2020-02-29 00:36:49
【问题描述】:
我有一个宏,我希望它可以自动用于所有 Excel 工作表。所以我将文件AutoTagExcelMacro.xla 放在文件夹C:\Program Files (x86)\Microsoft Office\root\Office16\XLSTART 中。这似乎可以解决问题。
Microsoft 支持人员告诉我,在那里安装文件后,我需要在安装的文件上调用RunAutoMacros。我吗?在这种情况下它会做什么?宏中没有 Open 或 Activate 宏。
这是一种在 Excel 中将其注册为始终运行的方法吗?正如我所说,在不运行 RunAutoMacros 的情况下安装文件确实使宏在我们测试系统的所有工作表中可用。但是我们所有的测试系统过去都调用过 RunAutoMacros,所以过去的调用可能会有所不同。
将文件复制到 XLSTART 后,当我创建一个新工作簿时,宏就在其中。我什么也没做,只是创建了一个新的工作簿来得到这个:
【问题讨论】:
-
将它放在 XLStart 上,您只能确保在 Excel 启动时文件已打开。这并不意味着您可以像在工作簿代码中那样调用公共函数。有几种方法可以分别从该特定工作簿访问宏:使用
Application.Run(我主要使用),或添加对该特定工作簿 VBProject 的引用。但是,当然,将名称从默认的VBProject更改为特定的名称。只有在这种情况下,您才能直接调用 Function/Sub。但这涉及创建对可能需要的所有工作簿的此类引用。 -
您是否阅读过有关 PERSONAL.xlsb 隐藏工作簿的信息?我曾经使用它,因此所有工作表上都可以使用函数。您可以在 Excel 顶部添加按钮,以便您可以随时在任何打开的书中调用这些函数support.office.com/en-gb/article/…
-
@FaneDuru 我认为你说的不正确。因为宏确实出现在任何新工作表中。
-
@David Thielen:当然是这样! Excel 在启动时会加载任何加载项。位于 XLStart 文件夹中的任何 Excel 文件都会发生完全相同的情况。这是艾说的。 “将其放在 XLStart 上,您只能确保在 Excel 启动时文件已打开”。在我的评论中,我指的是从打开的工作簿中运行加载项过程的方式......当您提到全局宏时,我认为您需要从打开的工作簿中运行它。这不是你问题的意思吗?
-
@David Thielen:我再次阅读了您的问题。我最初并不关心加载项的加载方式。我只关注调用它的程序的方式。现在,以不是最常见/正常的方式将加载项放在 XLStart 文件夹中。加载项可以自动安装(在 Workbook_Open 事件中有一些代码)或手动安装,就像 rva 在他的回答中解释的那样。在 Excel 中安装它,此操作将使 Excel 打开它。就像您的情况一样,将任何类型的 Excel 文件(xls、xlsx、xlsm、xla、xlam 等)放在 XLStart 文件夹中,它将由 Excel 打开。只开。 Excel 也是如此构建的...