无法运行宏...此工作簿中可能无法使用该宏

Ege*_*lem 23 excel vba

我试图在不同的工作表上调用一个子,但我得到一个运行时错误消息.

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

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

但是我得到了以下错误.两个工作表上的宏都已启用.在两个工作表中,subs都在Module1中.

无法运行宏'Workbook.xlsm!PrepareTheTables'.宏可能不在>此工作簿中可用,或者可能禁用所有宏.

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

Chi*_*ten 14

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

Application.Run "'Python solution macro.xlsm'!PreparetheTables"
Run Code Online (Sandbox Code Playgroud)


Mor*_*mon 7

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

  • 有一个在自动化 Excel 2003 中工作的宏,但当我迁移到 Excel 2010 时却不起作用。重命名了 Sub,它就工作了。现在我必须回去检查每个 VBA 文件。 (2认同)

小智 6

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

  1. 单击"Microsoft Office按钮",然后单击"Excel选项".
  2. 单击信任中心.
  3. 单击信任中心设置.
  4. 单击宏设置.
  5. 单击以选中"信任对VBA项目对象模型的访问权限"复选框.
  6. 单击"确定"关闭"Excel选项"对话框.
  7. 您可能需要关闭并重新打开Excel.

  • 我知道这是一个古老的答案,但由于此问答与之相关,因此需要在此处发表评论,说**不要这样做**.这是完全危险的可怕,不合理的建议.除非你在VBA中进行实际的元编程,或者需要运行代码,否则不要勾选该复选框.这个答案完全不适合这个OP.选中此框的唯一理由是,如果您正在使用VBIDE API*并且您知道自己在做什么*.否则,这是一个巨大的宏病毒安全漏洞. (10认同)
  • 只是为了用一点现实主义来吸引 Mathieu Guindon 的评论 - 在工业中这样做并不罕见,因为这是一个建设性的步骤,导致实际上能够调用宏。在我看来,它留下的安全漏洞并不令人望而却步。并不是说你应该这样做,但这个选项不值得彻底拒绝。 (2认同)

小智 6

遇到相同的问题,我“编译了VBA项目”发现了一个错误。经过更正和编译之后,这些宏起作用了。


Hea*_*ans 6

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

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

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

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


Pet*_*pin 6

ThisWorkbook就我而言,当我将宏(公共子)放入文件的一部分并期望它使其对Application.Run函数可见时,发生了错误。事实并非如此,我收到了您提到的错误。

我将宏移至单独的模块中,它解决了问题。


小智 1

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

  • 我对这个解决方案并不感到兴奋(自然),但是当其他建议失败时,这个解决方案成功了 (3认同)