如何用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
相关产品推荐
相关产品推荐

