从不同的工作簿调用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”)