vba中,使用Call程序名,是使用当前工作簿中的程序,若要运行其他工作簿的程序,则要使用(要先打开这个工作簿) plication.Run "'b.xls'!模块1.宏1"
除此之外,此方法还可以用于传递参数(跨工作簿)
参考:
Sub sal()
Dim a, b As String
a = "C:\Users\Administrator\Desktop\文艺社模板\10零售业务基础数据-零售(下).xlsm"
Application.Workbooks.Open a
Application.Run "'" & a & "'!b" '''''这是运行其他工作簿的程序(文件地址带参数)
End Sub
其中a工作簿模块下写下面的代码
Dim pth1 As String'当前模块
Public SS1 As String, SS2 As String
Public Sub Main()
pth1 = ThisWorkbook.Path & "\工作簿名.xls"
Application.Workbooks.Open pth1
Application.Run "'工作簿名.xls'!aa"''''''''这是运行其他工作簿的程序
Application.Run "'工作簿名.xls'!ssd"''''''''这是运行其他工作簿的程序(用于调用参数)
'Workbooks("工作簿名.xls").Close savechanges:=Fals
Range("a1") = Application.ExecuteExcel4Macro("abc")'''''''''这是传递参数
MsgBox Application.ExecuteExcel4Macro("abc")
End Sub
Sub aa()
MsgBox ("aa")
End Sub
‘’‘另一个工作簿’写这个
Public SS1 As String
Public Sub ssd()
Range("a1") = 1
SS1 = "aa12" 'ThisWorkbook.Name
Application.ExecuteExcel4Macro "set.name(""abc"",""" & SS1 & """)"
End Sub
Sub aa()
MsgBox ("bb")
End Sub