VBA为什么可以';我不能从其他文档运行宏吗?

VBA为什么可以';我不能从其他文档运行宏吗?,vba,excel,Vba,Excel,我有一个巨大的宏,它的一部分是: Dim wbMain As Workbook: Set wbMain = ActiveWorkbook Dim wbData As Workbook: Set wbData = Workbooks.Open(Filename:="C:\data\MAC DOC.xlsm") wbData.Activate Application.Run ("'" & wbData.Name & "'!Macro_NEW") 但是,在执行.Run时,它无法运行宏

我有一个巨大的宏,它的一部分是:

Dim wbMain As Workbook: Set wbMain = ActiveWorkbook
Dim wbData As Workbook: Set wbData = Workbooks.Open(Filename:="C:\data\MAC DOC.xlsm")
wbData.Activate
Application.Run ("'" & wbData.Name & "'!Macro_NEW")
但是,在执行
.Run
时,它无法运行宏,即使
whatworkbook=ActiveWorkbook.Name
返回与
wbData.Name
相同的结果,甚至可以使用
Application.Run(“'MAC DOC.xlsm'!macro_NEW“)手动尝试它

运行时错误:1004
无法运行宏:“MAC_DOC.xlsm!macro_NEW”。该宏可能在此工作簿中不可用,或者可能已禁用所有宏

当宏存在于
MAC DOC.xlsm


欢迎任何建议。

您的代码对我来说运行良好。确保宏\u New位于标准模块中,而不是工作表或此工作簿模块中。

尝试使用完整路径命名宏,该路径为

WorkbookName!VBAProjectName.ModuleName.MacroName
仅供参考,默认项目名称为
VBAProject
,默认模块名称为
Module1

(您也可以考虑<代码> WBDATA。FultName < /代码>,而不是<代码> WBDATA。


[此外,如果您知道宏总是在活动工作簿中,我想您可以省去前缀,只使用简单的宏名称——但我们并不总是想激活其他工作簿,所以请使用完整的宏路径名称。]

试试Erik在下面发布的内容,我同意这一点。我相信这会解决的。