【问题标题】:How do I provide a global macro in Excel?如何在 Excel 中提供全局宏?
【发布时间】: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 也是如此构建的...

标签: excel vba


【解决方案1】:

文件 > 选项 > 插件 > 前往 >

然后勾选插件的框并单击确定

【讨论】:

  • 我想安装它,以便它自动出现在所有工作表中。
  • 我下载了您的 .xla 并将其添加到 excel 中,如上所述。我确实忘记在去之后提到你需要浏览它才能添加它。在我在每个工作表中打开的每个新工作簿中都这样做之后,我打开了两个函数 autotag 和 parseNode 都可用。我不确定问题是什么。通过以这种方式添加它,您不需要每张工作表中的代码,因为它是全球可用的。
  • 这也是我发现的。但是微软付费支持说我们需要调用 RunAutoMacros,所以我正在寻找他们错误的确认。或者解释需要这样做的用例的人。
  • RunAutoMacros 是您希望每次在工作簿打开或关闭时运行代码时使用的。很难说他们是否错了,他们可能不明白你要求做什么。我认为这会更好地解释它。 analysistabs.com/vba-code/workbook/m/runautomacros
猜你喜欢
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 2022-11-10
  • 1970-01-01
  • 2019-09-17
  • 2020-05-19
相关资源
最近更新 更多