You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求编写VBA代码:将WB1特定行复制到WB2最后一行之后

VBA代码实现跨工作簿复制指定行内容

以下是两种场景下的代码,根据你的实际情况选择使用:

场景1:WB1和WB2均已打开

Sub CopyRowToWB2()
    Dim wb1 As Workbook, wb2 As Workbook
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim targetRow As Long
    
    ' 指定工作簿和工作表
    Set wb1 = ThisWorkbook ' 若代码在WB1中运行则用此句,否则替换为Workbooks("WB1.xlsx")
    Set ws1 = wb1.Worksheets("Sheet1")
    Set wb2 = Workbooks("WB2.xlsx") ' 确保WB2已打开,文件名需包含后缀(.xlsx/.xlsm等)
    Set ws2 = wb2.Worksheets("Sheet2")
    
    ' 获取WB2的Sheet2最后一行的下一行行号
    targetRow = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row + 1
    
    ' 复制指定区域到目标位置
    ws1.Range("A2:W2").Copy Destination:=ws2.Cells(targetRow, "A")
    
    ' 清除剪贴板状态,避免冗余提示
    Application.CutCopyMode = False
End Sub

注意点:

  • 若代码不在WB1中运行,将ThisWorkbook替换为Workbooks("WB1.xlsx"),文件名必须与实际一致(包括文件后缀)
  • 运行前确认WB2已在Excel中打开,否则会触发运行时错误

场景2:WB2未打开,需代码自动打开并操作

Sub CopyRowToClosedWB2()
    Dim wb1 As Workbook, wb2 As Workbook
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim targetRow As Long
    Dim wb2FullPath As String
    
    ' 替换为WB2的实际完整路径,示例:"C:\Users\XXX\Documents\WB2.xlsx"
    wb2FullPath = "你的WB2完整路径"
    
    Set wb1 = ThisWorkbook
    Set ws1 = wb1.Worksheets("Sheet1")
    
    ' 打开WB2,ReadOnly设为False允许修改,设为True则只读
    Set wb2 = Workbooks.Open(Filename:=wb2FullPath, ReadOnly:=False)
    Set ws2 = wb2.Worksheets("Sheet2")
    
    ' 获取目标行号
    targetRow = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row + 1
    
    ' 复制数据
    ws1.Range("A2:W2").Copy Destination:=ws2.Cells(targetRow, "A")
    
    ' 保存并关闭WB2(若不需要保存可删除wb2.Save语句)
    wb2.Save
    wb2.Close
    
    Application.CutCopyMode = False
End Sub

注意点:

  • 必须准确填写WB2的完整路径,否则无法找到文件
  • 若WB2是只读文件,将ReadOnly:=False改为ReadOnly:=True,同时删除wb2.Save语句(只读文件无法保存修改)

内容的提问来源于stack exchange,提问作者buntsch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:50:26