我试图在不同的工作表上调用一个子,但我得到一个运行时错误消息.
具体来说,我在这些工作表中有两个工作表和多个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)
在我的情况下,当子名称与模块名称相同时出现此错误。
小智 6
根据Microsoft的KB,尝试允许以编程方式访问Visual Basic项目:
- 单击"Microsoft Office按钮",然后单击"Excel选项".
- 单击信任中心.
- 单击信任中心设置.
- 单击宏设置.
- 单击以选中"信任对VBA项目对象模型的访问权限"复选框.
- 单击"确定"关闭"Excel选项"对话框.
- 您可能需要关闭并重新打开Excel.
在类模块中创建例程时,也会遇到此问题。
当您尝试从外部运行代码时,会出现此错误。
您也不能将按钮的宏分配给类模块的成员。
如果您尝试通过按绿色播放按钮从代码中运行,您还将看到相同的错误。
将例程移入常规模块,或在调用类成员的常规模块中创建新例程。
ThisWorkbook就我而言,当我将宏(公共子)放入文件的一部分并期望它使其对Application.Run函数可见时,发生了错误。事实并非如此,我收到了您提到的错误。
我将宏移至单独的模块中,它解决了问题。