VBA从已关闭工作簿复制可变单元格区域出现报错如何处理
VBA读取关闭工作簿报错问题排查与修复
错误点梳理
- 第一次"Object doesn't support this property or method"报错原因:
Workbook对象不能直接调用Cells属性,LastSrcRow = src.Cells(...)行没有指定src下的具体工作表,且Rows.Count未指定所属工作表,默认取当前活动工作表的行数,和源表行数匹配逻辑错误 - 第二次"Object Required" (424)报错原因:变量已重命名为
source,但关闭对象时仍然使用未定义的变量src1,系统找不到对应对象因此报错 - 通用语法问题:代码中跨换行的赋值语句没有加VBA续行符
_,会触发语法错误;原始代码中LastSrcRow用Integer类型存储,当行数超过32767时会触发溢出错误(修改后换成Long是正确的)
修复后完整代码
Sub PadslocReadData() Application.ScreenUpdating = False Dim source As Workbook Dim LastSrcRow As Long Dim curWorkbook As Workbook Set curWorkbook = ThisWorkbook ' 此处替换为你的实际文件完整路径 Set source = Workbooks.Open("C:\你的实际文件路径\filename.xls", False, False) ' 明确指定源表计算最后一行 LastSrcRow = source.Worksheets("Sheet1").Cells(source.Worksheets("Sheet1").Rows.Count, "A").End(xlUp).Row ' 跨行赋值加续行符,注意下划线前需要保留空格 curWorkbook.Worksheets("sls").Range("A1:G" & LastSrcRow).Formula = _ source.Worksheets("Sheet1").Range("A1:G" & LastSrcRow).Formula ' 用正确的变量名关闭工作簿 source.Close False Application.ScreenUpdating = True End Sub
额外注意事项
- 打开文件的路径请替换为实际的完整绝对路径,避免共享路径访问权限问题
- 最后记得把
ScreenUpdating改回True,否则Excel界面会出现无响应的假死状态
内容的提问来源于stack exchange,提问作者Jaydubs
相关产品推荐
相关产品推荐

