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

时间:2013-08-22 19:47:13

标签: excel vba

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

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

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

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

  

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

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

13 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:6)

Per Microsoft's KB,尝试允许以编程方式访问Visual Basic项目:

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

答案 2 :(得分:5)

有同样的问题和我'编译的VBA项目',它确定了一个错误。经过校正和编译后,宏工作了。

答案 3 :(得分:4)

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

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

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

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

答案 4 :(得分:2)

我也遇到了这个错误的问题,结果证明文件名导致了问题。

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

变量strFName中包含一个撇号,这当然搞砸了。花了我几个小时来搞清楚。但是一旦从文件名中删除了撇号就可以了。

答案 5 :(得分:2)

在我的情况下,当我将宏(公共子项)放入文件的ThisWorkbook节中时,期望该文件对Application.Run函数可见,该错误发生了。情况并非如此,我得到了您提到的错误。

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

答案 6 :(得分:0)

删除您的名称宏并重新构建。 我做了这个,宏工作了。

答案 7 :(得分:0)

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

' Comment comment  

Options Explicit  

Sub someMacroMakechart()

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

' Comment comment  

Option Explicit  

Sub someMacroMakechart()

答案 8 :(得分:0)

我必须从文件名和宏名称中删除所有破折号和下划线,确保已启用宏并添加模块名称.macro名称

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

答案 9 :(得分:0)

在我的情况下,当Sub名称与Module名称相同时会出现此错误。

答案 10 :(得分:0)

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

例如: 使用VBA创建按钮并设置.OnAction = 'btn_action'。然后Sub btn_action放入Sheet对象而不是Module中。

答案 11 :(得分:0)

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

答案 12 :(得分:0)

我有相同的错误消息“找不到宏___等”,即使将文件另存为XLSX,此问题仍然存在。这似乎很奇怪……如果文件没有宏,它将如何运行宏!

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

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