Excel 引用VBA从单元格范围中指定名称的工作簿运行宏&;隐藏模块错误中的编译错误

Excel 引用VBA从单元格范围中指定名称的工作簿运行宏&;隐藏模块错误中的编译错误,excel,vba,Excel,Vba,所以我一直在尝试运行工作簿a.xlsm中存在的一个过程,即从工作簿B.xlsm中的另一个宏运行Test_v1.1。我有两个问题 1> 工作簿A.xlsm即Test_v1.1不断更改的版本号 因此,我引用了工作簿中单元格“A2”中的工作簿名称 B.xlsm根据单元格引用成功打开工作簿 但无法运行该过程。需要了解如何引用工作簿名称 在单元格中使用“Application.run”命令时 2> 当我使用Application.run时,运行“隐藏模块3中的编译错误” 发生。我怎样才能克服这个问题。为了

所以我一直在尝试运行工作簿a.xlsm中存在的一个过程,即从工作簿B.xlsm中的另一个宏运行Test_v1.1。我有两个问题

1> 工作簿A.xlsm即Test_v1.1不断更改的版本号
因此,我引用了工作簿中单元格“A2”中的工作簿名称 B.xlsm根据单元格引用成功打开工作簿 但无法运行该过程。需要了解如何引用工作簿名称 在单元格中使用“Application.run”命令时

2> 当我使用Application.run时,运行“隐藏模块3中的编译错误” 发生。我怎样才能克服这个问题。为了让您随时在中发布模块 测试_v1.1的密码保护和宏本身有额外的 参考资料,即Access等,工作簿B.xlsm没有这些参考资料

Sub extract_data()

Application.DisplayAlerts = False

Application.ScreenUpdating = False

Application.CutCopyMode = False

Excel.Application.EnableEvents = False

Test_ver = ActiveWorkbook.Worksheets(1).Range("A2").Value

Dim sdate As Date
Dim edate As Date
Dim test_wb As Workbook
Dim test_ws As Worksheet
Set test_wb = Workbooks.Open("'path" & Test_ver)
Set test_ws = test_wb.Worksheets(1)

sdate = Date - 1
ydate = Date

test_ws.DTPicker1.Value = sdate
test_ws.DTPicker2.Value = edate

' Run procedure on Test macro  --------------------------------------------> Need help here

Application.Run "Test_v1.1.xlsm!Button1_Click"

Application.DisplayAlerts = True

Application.ScreenUpdating = True

Application.CutCopyMode = True

Excel.Application.EnableEvents = True

End Sub
编译错误:

“隐藏模块3中的编译错误”


我得到的是什么问题:

Application.Run "'" & test_wb.Name & "'!Button1_Click"
  • 调用宏时,需要在工作簿名称前后添加
所以改变吧

Application.Run "Test_v1.1.xlsm!Button1_Click"
至:

Application.Run "'" & test_wb.Name & "'!Button1_Click"
演示:

Application.Run "'" & test_wb.Name & "'!Button1_Click"

不确定,但宏是否在模块中?此外,我可能会将工作簿的名称写为:
Application.Run“'Test\u v1.1.xlsm”!Button1\u Click“
,带有单个语音标记…@Mikku感谢您的回复。对宏位于Test_v1.1.xlsm和workbook B.xlsm的模块中。我确实同意守则。但是,工作簿名称“Test_v1.1”不断变化。因此,我在单元格引用中提供了名称。如何在application.run命令中将此单元格值引用为工作簿。?我得到了一个编译器错误:当我执行此操作时,在隐藏模块模块3中出现编译错误。@Xabier。。上面的评论是给你的:)@Xabier:对不起,我的错。这是为您准备的。将此
Application.Run“Test\u v1.1.xlsm!Button1\u Click”
更改为
Application.Run“”&Test\u wb.Name&“!Button1\u Click”
。。您必须在Workbookadds.xlsm工作簿名称更改之前和之后添加
,然后这仍然有效吗?是的。它正在从单元格中选择名称。