我有一个巨大的宏,部分原因是:
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"。宏可能在此工作簿中不可用,或者可能禁用所有宏
为什么在<{1}}中存在宏 时会出现这种情况 欢迎任何建议。
答案 0 :(得分:2)
尝试使用完整路径命名宏,即
WorkbookName!VBAProjectName.ModuleName.MacroName
仅供参考,默认项目名称为VBAProject
,默认模块名称为Module1
。
(您也可以考虑wbData.FullName
而不是wbData.Name
。)
[另外,如果您知道宏总是在活动工作簿中,我认为您可以省略前缀并使用简单的宏名称 - 但我们并不总是想激活其他工作簿,因此请使用完整的宏路径名称。]
答案 1 :(得分:0)
您的代码运行正常。确保Macro_New位于标准模块中,而不是工作表或ThisWorkbook模块。