无法运行macros…macros可能不在此工作簿中可用

我想调用不同的工作表上的一个子,但我得到了一个运行时错误信息。

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

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

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

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

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

任何帮助,将不胜感激。

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

  1. 单击Microsoft Officebutton,然后单击Excel选项。
  2. 点击信任中心。
  3. 点击信任中心设置。
  4. 点击macros设置。
  5. 单击以选中对VBA项目对象模型的信任访问checkbox。
  6. 单击确定closuresExcel选项对话框。
  7. 您可能需要closures并重新打开excel。

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

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

有同样的问题,我'编译VBA项目'确定了一个错误。 更正和编译后,macros工作。

删除你的名字macros并重新构build。 我做了这个,macros观工作。

我和OP有同样的问题,发现是由于选项声明拼写错误:

 ' Comment comment Options Explicit Sub someMacroMakechart() 

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

 ' Comment comment Option Explicit Sub someMacroMakechart() 

导致此错误的最可能原因是Excel VBA中的安全function不允许运行VBA代码。 用户应明确授予与工作簿一起运行excelmacros的权限。 这可能需要或可能不需要编程访问Visual Basic项目。

为我解决这个错误是:

  1. 启用编辑和启用内容

    启用内容按钮

  2. 更改macros设置,无需编程访问步骤和详细信息
  3. 更改macros设置以及编程访问(如果上述任何一个过程都不推荐则不build议这样做),这将使代码控制改变VBA项目本身中的元素,包括参考和代码本身 – 参考 )

    步骤在这里

保存为.xlsm(启用Excelmacros的工作簿)。

在我的情况下,这是由于有一个不同的模块中的公共过程和调用模块中具有相同名称的私有过程。 VBA不区分这两个,因此给出了一个钝的错误。

我不得不从文件名和macros名称中删除所有破折号和下划线,确保macros已启用,并添加它们模块name.macro名称

这是我结束了:Application.Run(“'”&WbName&“'”&“!ModuleName.MacroName”)

打开上次保存的语法错误的macros时会popup此错误。 虽然消息将引用正在调用错误的子或函数的macros。 为了解决这个问题,我通常会尝试分别运行最后编辑的macros。

我也有这个错误的问题,原来的文件名是造成这个问题。

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

variablesstrFName在其中包含一个撇号,这当然是搞砸了。 花了我几个小时弄清楚。 但一旦撇号从文件名中删除,它的工作。

检查:

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

使用模块名称。