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

如何用Workbook和Worksheet变量实现Excel工作簿间数据复制?代码求助

使用Workbook和Worksheet变量实现Excel跨工作簿数据复制

你的代码核心问题在于变量引用逻辑错误,同时赋值方向颠倒,以下是具体修正方案:

原代码问题点

  • 错误调用wbSource.wsDest:wsDest已经是绑定到目标工作簿DestinationWB.xlsx的工作表变量,无需再通过源工作簿wbSource调用
  • 赋值方向搞反:代码意图是从源工作簿复制数据到目标,但写的却是把目标工作表的值赋给目标工作表,逻辑完全颠倒

修正后的代码

Sub Test()
    ' 声明并绑定工作簿变量
    Dim wbSource As Workbook, wbDest As Workbook
    Set wbSource = ThisWorkbook
    Set wbDest = Workbooks("DestinationWB.xlsx")
    
    ' 声明并绑定工作表变量(直接用已绑定的工作簿变量调用,更规范)
    Dim wsSource As Worksheet, wsDest As Worksheet
    Set wsSource = wbSource.Worksheets("Sheet1")
    Set wsDest = wbDest.Worksheets("Sheet1")
    
    ' 正确复制数据:源工作表A1的值 → 目标工作表A1
    wsDest.Range("A1").Value = wsSource.Range("A1").Value
End Sub

实用优化提示

  • 如果需要复制连续区域(如整行、整列或一块数据),可以直接用Copy方法提升效率:
    ' 复制源工作表A1:C10区域到目标工作表A1起始位置
    wsSource.Range("A1:C10").Copy Destination:=wsDest.Range("A1")
    
  • 建议添加目标工作簿存在性检查,避免因文件未打开报错:
    On Error Resume Next
    Set wbDest = Workbooks("DestinationWB.xlsx")
    On Error GoTo 0
    If wbDest Is Nothing Then
        MsgBox "请先打开目标工作簿DestinationWB.xlsx"
        Exit Sub
    End If
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:25:24