Excel 无法运行宏。。。宏可能在此工作簿中不可用

Excel 无法运行宏。。。宏可能在此工作簿中不可用,excel,vba,Excel,Vba,我试图调用其他工作表上的sub,但收到运行时错误消息 具体地说,我有两个工作表和这些工作表中的多个VBA子表。在其中一个VBA项目(如workbook1.xlsm)中,我有以下代码: Sub AnalysisTableMacro() Workbooks("Python solution macro.xlsm").Activate Application.Run "Python solution macro.xlsm!.PreparetheTables" End Sub 但是我犯了以下错误。两个

我试图调用其他工作表上的sub,但收到运行时错误消息

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

Sub AnalysisTableMacro()
Workbooks("Python solution macro.xlsm").Activate
Application.Run "Python solution macro.xlsm!.PreparetheTables"
End Sub
但是我犯了以下错误。两个工作表上的宏都已启用。在两个工作表中,SUB都在模块1中

无法运行宏“Workbook.xlsm!”!准备表格'。宏可能在>此工作簿中不可用,或者所有宏都可能被禁用


我还尝试了Application.runpythonsolutionmacro.xlsm!Module1.PreparetheTables但不起作用。

删除您的name宏并重新生成。 我这样做了,宏工作正常。

请尝试允许对Visual Basic项目进行编程访问:

单击Microsoft Office按钮,然后单击Excel选项。 单击信任中心。 单击信任中心设置。 单击宏设置。 单击以选中“信任访问VBA项目对象模型”复选框。 单击“确定”关闭“Excel选项”对话框。 您可能需要关闭并重新打开excel。
我遇到与OP相同的问题,并发现是由于选项声明拼写错误:

' Comment comment  

Options Explicit  

Sub someMacroMakechart()
在子模块中,而不是正确的

' Comment comment  

Option Explicit  

Sub someMacroMakechart()

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

Application.Run "'Python solution macro.xlsm'!PreparetheTables"

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

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


这就是我最终得到的结果:Application.Run'&WbName&'&!ModuleName.MacroName

我也遇到了这个错误,结果是文件名导致了这个问题

我这样称呼它: 应用程序。运行“&strPath&strFName&”!UPC.PrintaFew


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

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

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

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


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

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

在我的情况下,当我将宏公共子对象放入文件的ThisWorkbook部分时,错误发生,希望它会成功对应用程序可见。运行函数。事实并非如此,我犯了你提到的那个错误


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

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

例如:
您可以使用VBA按钮创建并设置.OnAction='btn_action'。并将您放置在工作表对象中的btn_操作分为模块。

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

我收到了相同的错误消息“找不到宏”\uuuuuuuuuuuu等,即使在我将文件保存为XLSX后,这个问题仍然存在。这似乎很奇怪。。。当文件没有宏时,它怎么可能运行宏

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


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

我对这个解决方案自然不感兴趣,但当其他建议失败时,我知道这是一个旧答案,但由于这个问答链接到了,这里需要一条注释,说明不要这样做。这是一个可怕的、毫无道理的建议,完全是危险的。不要勾选该复选框,除非您正在用VBA进行实际的元编程,或者需要运行这样的代码。这个答案完全不适合这里的这篇文章。选中此框的唯一原因是,如果您正在使用VBIDE API,并且您知道自己在做什么。除此之外,这是一个巨大的宏病毒安全漏洞。为了让Mathieu Guindon的评论更真实一点,在行业中这样做并不少见,因为这是一个建设性的步骤,可以真正调用宏。在我看来,它留下的安全漏洞并不令人望而却步。并不是说你应该这么做
很好,但这个选项不值得直接拒绝。我有一个宏在automated Excel 2003中工作,但在我转到Excel 2010时没有。重新命名了潜艇,它成功了。现在我必须回去检查每个VBA文件。太简单了。我遇到了这个问题,所以我检查了是否有Excel进程正在运行。它就在那里!我杀了它。成功了。所以现在我认为问题是,有时候Excel进程可以在没有机器控制的情况下运行。必须杀死它才能正常工作。