Excel VBA调用外部工作簿Button2_Click遇运行时错误438的技术问询
错误原因
运行时错误'438'的根源是**ActiveWorkbook对象不支持Run方法**,你错误调用了不存在的对象属性/方法。执行外部工作簿的宏需要使用Application.Run方法,这是VBA中执行宏的标准方式。
修正后的代码
以下是调整后的完整代码,同时优化了代码稳定性(避免依赖ActiveWorkbook/ActiveWindow这类易受激活状态影响的对象):
Sub Macro1() Dim N As Integer Dim F As String Dim wb As Workbook Dim CV As String Dim i As Integer N = 8 For i = 6 To N ' 明确读取当前宏所在工作簿的单元格值 CV = ThisWorkbook.Cells(i, 1).Value F = "P:\101_\" & CV & ".xlsm" ' 打开目标工作簿 Set wb = Workbooks.Open(F) ' 正确调用目标工作簿中的Button2_Click宏 Application.Run "'" & wb.Name & "'!Button2_Click" ' 直接打印目标工作簿的第一个工作表 wb.Sheets(1).PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False ' 关闭工作簿,不保存更改 wb.Close SaveChanges:=False Set wb = Nothing Next i End Sub
额外说明
如果Button2_Click是写在工作表模块中(而非标准模块),需要在宏名前加上工作表名称,示例如下:
' 假设代码在Sheet1模块中,替换为实际工作表名称 Application.Run "'" & wb.Name & "'!Sheet1.Button2_Click"
内容的提问来源于stack exchange,提问作者user2694186
相关产品推荐
相关产品推荐

