VBA为什么我不能从不同的文档运行宏?

时间:2015-06-09 00:01:32

标签: excel vba excel-vba

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

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}}中存在宏 时会出现这种情况 欢迎任何建议。

2 个答案:

答案 0 :(得分:2)

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

WorkbookName!VBAProjectName.ModuleName.MacroName

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

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

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

答案 1 :(得分:0)

您的代码运行正常。确保Macro_New位于标准模块中,而不是工作表或ThisWorkbook模块。