从不同的工作簿调用Excelmacros

我有一个工作簿HasMacros.xlsm和一个工作簿HasData.xlsm

在HasMacros.xlsm中,我添加了一个名为Mod1的模块,并且只有这个代码:

Sub testmacro() MsgBox ("Test") End Sub 

在HasData.xlsm中,我添加了一个名为Mod2的模块,并且只有这个代码:

 Sub testmacro2() 'XXX End Sub 

到现在为止还挺好。 没有其他在Excel中打开。

现在,我想从写入XXX的testmacro2调用testmacro。

这会失败,立即编译错误:

 Sub testmacro2() testmacro() End Sub 

这将失败,编译错误“function未定义的子”在exec:

 Sub testmacro2() Call testmacro End Sub 

这会失败,立即编译错误:

 Sub testmacro2() Mod1.testmacro() End Sub 

这在exec上失败:

Sub testmacro2()

调用Mod1.testmacro

结束小组

然后,我尝试了如何从VBA中的另一个特定的工作簿中调用函数? 但是我明白了

名称与现有模块,项目或对象库冲突

关于如何从HasData.xlsm中的VBA代码调用HasMacros.xlsm中的macros,我已经用完了所有的想法

您还可以将Workbook HasMacros.xlsm中的VBA项目名称更改为VBAProject以外的项目,然后从HasData.xlsm项目中将该项目的引用(VB编辑器中的工具 – 引用)设置为该项目。 这将允许您直接调用其他macros而不使用Run

Application.Run(“'Workbook HasMacros.xlsm'!testmacro”)