Excel VBA导入子过程报错:Copy方法After参数处终止,求修正方案
修复VBA导入子过程的Copy方法错误
你的代码在执行到QWS.Cells.Copy After:=ZWS(Sheets.Count)时终止,核心问题有两个:
- 语法错误:
ZWS是单个工作表对象,不能通过索引(如Sheets.Count)访问它的子元素; - 参数误用:
Range.Copy的After参数需要指定一个单元格对象(Range),用于定位粘贴的起始位置;如果你的需求是复制整个工作表,应该使用Worksheet.Copy方法而非Cells.Copy。
根据你的实际需求,选择以下两种修改方案:
方案1:复制目标工作表的所有单元格到当前工作表末尾
若需将Table1的单元格内容追加到当前激活工作表的已有数据之后,修改代码如下:
Sub DatImport1() Dim QWB As Workbook, ZWB As Workbook Dim QWS As Worksheet, ZWS As Worksheet Dim targetRange As Range Set ZWB = ThisWorkbook Set ZWS = ZWB.ActiveSheet Set QWB = Workbooks.Open("C:\Test.xlsx") Set QWS = QWB.Worksheets("Table1") ' 定位到当前工作表第一列最后一行的下一个空白单元格 Set targetRange = ZWS.Cells(ZWS.Rows.Count, 1).End(xlUp).Offset(1, 0) ' 复制并粘贴内容 QWS.Cells.Copy Destination:=targetRange QWB.Close SaveChanges:=False ' 关闭源文件时不保存修改 End Sub
方案2:复制整个目标工作表到当前工作簿最后
若需将Table1整个工作表复制到当前工作簿的所有工作表之后,修改代码如下:
Sub DatImport1() Dim QWB As Workbook, ZWB As Workbook Dim QWS As Worksheet Set ZWB = ThisWorkbook Set QWB = Workbooks.Open("C:\Test.xlsx") Set QWS = QWB.Worksheets("Table1") ' 复制工作表到当前工作簿的最后一个工作表之后 QWS.Copy After:=ZWB.Sheets(ZWB.Sheets.Count) QWB.Close SaveChanges:=False End Sub
内容的提问来源于stack exchange,提问作者Örv
相关产品推荐
相关产品推荐

