29

我正在尝试在不同的工作表上调用 sub,但我收到了运行时错误消息。

具体来说,我在这些工作表中有两个工作表和多个 VBA sub。在其中一个 VBA 项目(比如 workbook1.xlsm)中,我有以下代码:

Sub AnalysisTableMacro()
Workbooks("Python solution macro.xlsm").Activate
Application.Run "Python solution macro.xlsm!.PreparetheTables"
End Sub

但我收到以下错误。两个工作表上的宏都已启用。在这两个工作表中,潜艇都在 Module1 中。

无法运行宏“Workbook.xlsm!PrepareTheTables”。>此工作簿中的宏可能不可用,或者所有宏都可能被禁用。

我也试过Application.Run "Python solution macro.xlsm!Module1.PreparetheTables"但没有奏效。

4

13 回答 13

22

如果工作簿名称中有空格,则必须在文件名周围使用单引号 (')。我也删除了句号。

Application.Run "'Python solution macro.xlsm'!PreparetheTables"
于 2016-03-07T15:55:26.303 回答
10

在我的情况下,当子名称与模块名称相同时出现此错误。

于 2019-05-25T19:11:54.957 回答
8

在类模块中创建例程时也会遇到此问题。

当您尝试在外部运行代码时,您会收到此错误。
您也不能将宏分配给类模块的成员按钮。

如果您尝试通过按绿色播放按钮从代码中运行,您也会看到相同的错误。

要么将例程移入常规模块,要么在调用类成员的常规模块中创建新例程。

于 2018-05-11T13:39:09.553 回答
7

根据Microsoft 的 KB,尝试允许以编程方式访问 Visual Basic 项目:

  1. 单击 Microsoft Office 按钮,然后单击 Excel 选项。
  2. 单击信任中心。
  3. 单击信任中心设置。
  4. 单击宏设置。
  5. 单击以选中“信任对 VBA 项目对象模型的访问”复选框。
  6. 单击“确定”关闭“Excel 选项”对话框。
  7. 您可能需要关闭并重新打开 excel。
于 2014-01-17T00:42:37.773 回答
7

有同样的问题,我“编译的 VBA 项目”发现了一个错误。更正和编译后,宏工作。

于 2016-09-04T03:53:58.697 回答
4

在我的情况下,当我将宏(公共子)放入ThisWorkbook文件的一部分时发生错误,期望它将使其对Application.Run功能可见。事实并非如此,我得到了你提到的那个错误。

我将我的宏移动到一个单独的模块中,它解决了这个问题。

于 2019-08-07T17:55:35.267 回答
2

进入任务管理器,看看是否有任何 Microsoft Excel 进程在后台运行。我关闭了我的 excel 后台进程,我的代码再次运行。

于 2020-01-07T18:45:44.247 回答
2

我也遇到了这个错误的问题,原来是文件名导致了问题。

我这样称呼它: Application.Run "'" & strPath & strFName & "'!UPC.PrintaFew"

变量 strFName 中包含一个撇号,这当然把事情搞砸了。我花了几个小时才弄清楚。但是,一旦从文件名中删除撇号,它就起作用了。

于 2017-09-01T11:13:23.410 回答
1

删除您的名称宏并重新构建。我这样做了,并且宏起作用了。

于 2013-10-05T23:50:06.657 回答
1

我必须从文件名和宏名中删除所有破折号和下划线,确保启用了宏并将它们添加到模块名.宏名

这就是我最终的结果:Application.Run ("'" & WbName & "'" & "!ModuleName.MacroName")

于 2017-08-03T20:58:02.947 回答
0

我遇到了与 OP 相同的问题,发现是由于选项声明拼写错误:

' Comment comment  

Options Explicit  

Sub someMacroMakechart()

在子模块中,而不是正确的;

' Comment comment  

Option Explicit  

Sub someMacroMakechart()
于 2016-01-21T05:04:22.727 回答
0

如果您在“Microsoft Excel 对象”(如 Sheet1、Sheet2、...)中创建子函数或函数而不是在模块中创建它,也会发生此错误。

例如:您使用 VBA 创建一个按钮并设置.OnAction = 'btn_action'. 并且Sub btn_action您将其放入 Sheet 对象中,而不是放入模块中。

于 2019-11-06T18:50:29.407 回答
0

我有同样的错误消息“找不到宏___等”,即使在我将文件保存为 XLSX 之后,这个问题仍然存在。这看起来很奇怪......当文件没有宏时,它怎么可能运行宏!

当我使用自定义 UI 编辑器检查文件时,我发现在初始化文件时调用了一个宏,而当用户单击“保存”按钮时正在调用另一个自定义宏。

使用自定义 UI 编辑器,我删除了所有 XML 代码并且错误消息消失了。

于 2020-05-20T04:07:24.960 回答