VBA为什么我不能从一个不同的文件运行一个macros?

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

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") 

但是,在做。运行失败,即使whatworkbook = ActiveWorkbook.Name返回相同的wbData.Name ,甚至尝试手动与Application.Run ("'MAC DOC.xlsm'!Macro_NEW")做相同事情。

运行时错误:1004
无法运行macros:“MAC_DOC.xlsm!Macro_NEW”。 该macros可能无法在此工作簿中使用,或者所有macros都可能被禁用

为什么这个macros在MAC DOC.xlsm 存在时MAC DOC.xlsm
任何意见欢迎。

尝试使用完整path来命名macros,这是

 WorkbookName!VBAProjectName.ModuleName.MacroName 

仅供参考,默认项目名称为VBAProject ,默认模块名称为Module1

(你也可以考虑wbData.FullName而不是wbData.Name 。)

[另外,如果您知道macros始终处于活动工作簿中,我认为您可以忽略前缀,只使用简单的macros名称 – 但我们并不总是要激活其他工作簿,因此使用完整的macrospath名称]。

你的代码对我来说运行良好。 确保Macro_New位于标准模块中,而不是工作表或ThisWorkbook模块。