首页 > 解决方案 > 参考 VBA 从工作簿中运行宏,其名称在单元格区域中指定 & 隐藏模块错误中的编译错误

问题描述

因此,我一直在尝试从工作簿 B.xlsm 中的另一个宏运行工作簿 A.xlsm 中存在的过程,即 Test_v1.1。我有 2 个问题。

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

2> 当我使用 Application.run 时,出现“隐藏模块模块 3 中的编译错误”。我该如何克服这一点。为了让您在受密码保护的 Test_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 中的编译错误”

这就是我得到的

标签: excelvba

解决方案


问题:

  • '调用宏时需要在工作簿名称前后添加

所以改变

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

至:

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

演示:

在此处输入图像描述


推荐阅读