我试图在不同的工作表上调用一个子,但我得到一个运行时错误消息 .
具体来说,我在这些工作表中有两个工作表和多个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"
但没有奏效 .
8 回答
有同样的问题,我'编译了VBA项目',发现了一个错误 . 在校正和编译之后,宏工作了 .
在类模块中创建例程时,也会遇到此问题 .
当您尝试从外部运行代码时,您会收到此错误 .
您也不能将宏指定给类模块的成员按钮 .
如果您尝试通过按绿色播放按钮在代码内运行,您也会看到相同的错误 .
将例程移动到常规模块或在调用类成员的常规模块中创建新例程 .
我也遇到了这个错误的问题,结果证明文件名导致了问题 .
我这样称它为:Application.Run“'”&strPath&strFName&“'!UPC.PrintaFew”
变量strFName中包含一个撇号,这当然搞砸了 . 花了我几个小时来搞清楚 . 但是一旦从文件名中删除了撇号就行了 .
删除您的名称宏并再次构建 . 我这样做了,宏工作了 .
我有与OP相同的问题,发现是由于选项声明拼写错误:
在子模块中,而不是正确的;
我必须从文件名和宏名称中删除所有破折号和下划线,确保启用了宏并添加模块名称.macro名称
这就是我最终得到的:Application.Run(“'”&WbName&“'”&“!ModuleName.MacroName”)
如果工作簿名称中有空格,则必须在文件名周围使用单引号(') . 我也删除了句号 .
按Microsoft's KB,尝试允许以编程方式访问Visual Basic项目: