Vba 调用名称位于单元格文本中的宏
请提供以下帮助:Vba 调用名称位于单元格文本中的宏,vba,excel,Vba,Excel,请提供以下帮助: 我需要调用一个名为variable的宏,它位于Workbook1的Sheet1的单元格C5中 我需要在另一个工作簿(比如Workbook2)中运行该宏 到目前为止,我(在Workbook1中)拥有的代码是: Public Sub RS() 'Setting source worksheet and workbook where the macros are saved Dim ws1 As Worksheet Dim wb1 As Workbook
Public Sub RS()
'Setting source worksheet and workbook where the macros are saved
Dim ws1 As Worksheet
Dim wb1 As Workbook
Set wb1 = ActiveWorkbook
Set ws1 = ActiveWorkbook.ActiveSheet
'Defining the cell that contains the name of the chosen macro to be run
Dim Macro1 As String
Macro1 = Range("C5").Value
'Selecting target workbook
Workbooks("Workbook2").Activate
ActiveSheet.Select
Dim ws2 As Worksheet
Dim wb2 As Workbook
Set wb2 = ActiveWorkbook
Set ws2 = ActiveWorkbook.ActiveSheet
'Running in Workbook2, the macro selected in workbook1
Call Macro1
End Sub
问题是没有识别出
Macro1
。我还尝试了CallByName
函数和Application.Run Macro1
,但也没有成功。请告诉我缺少什么或应该修改什么。要从另一个工作簿调用宏,需要在Application.Run方法的第一个参数中包含该工作簿的名称。尝试:
Application.Run "WBNameThatContainsTheMacro.xlsm!" & Range("C5").Value
如果该工作簿中有多个模块,也可以显式显示:
Application.Run "WBNameThatContainsTheMacro.xlsm!" & "Module1." & Range("C5").Value
其中Module1
是模块的名称。注意分隔模块名和宏名的点。这就是你想要的吗?HTH.更换管路
Call Macro1
为此:
Application.Run "'" & wb2.Name & "'!VBAProject." & ws2.CodeName & "." & Macro1
您的代码暗示“Macro1”在ws2的代码模块中。如果它位于工作簿“wb2”的另一个模块中,则将上面的“ws2.CodeName”替换为该模块的代码名
根据Flavinho提供的信息进行第二次更新。代码线如下:
'Application.Run "Workbook1.xlsm!VBAProject.Module3.ts1"
Application.Run "Workbook1.xlsm!VBAProject.Module3." & ts1
感谢L42和Gene Skuratovsky的回复!我选择了:Application.Run“Workbook1.xlsm!”&“Module3.”&ts1,但我遇到了以下错误:“运行时错误“1004”:无法运行宏…宏可能在此工作簿中不可用,或者所有宏都被禁用。现在会出现什么问题?谢谢!请忽略以上内容:(宏位于Workbook1中,需要在Workbook2中运行。Thank.ts1的定义如下:Dim ts1作为字符串ts1=工作簿(“Workbook1.xlsm”).Sheets(“Sheet1”).Range(“C5”)。值单元格C5的文本包含要运行的宏的名称我已再次更新了答案,基本上是您尝试过的,除了“VBAProject”位。如果这不起作用(而且绝对应该如此!),这里有完全不同的东西…我强烈推荐