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

请提供以下帮助:

  • 我需要调用一个名为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
        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”位。如果这不起作用(而且绝对应该如此!),这里有完全不同的东西…我强烈推荐