好像需求描述还有些二义,例如是整列覆盖?还是在目标表对应列最后一行追加?
是两个独立表格文件两个“工作簿”?
还是可以理解为同一个文件(工作簿)中的两个不同“工作表”?
有没有需指定“工作表”中Sheet?
假设两个独立EXCEL表格文件(工作簿)的工作表均为Sheet1
可以参考如下代码(在MS Office Excel测试通过)按实际需求进一步调整
Sub copy_AToB()
Dim Wbook1 As Workbook, Wbook2 As Workbook
Dim path_A, path_B
Dim ABookName, BBookName '假设两个独立表格文件
Dim aCol As Integer, bCol As Integer
Application.ScreenUpdating = False '暂停刷新
path_A = "D:\"
ABookName = "checkA.xlsx" 'A表格文件名称
path_B = "E:\"
BBookName = "checkB.xlsx" 'B表格文件名称
aCol = 3 'A表格的源列号 按需求灵活调整
bCol = 6 'B表格的目标列号
If ABookName = BBookName Then
MsgBox "两个文件名称不能相同", vbInformation, "提示"
Exit Sub ‘若不符合逻辑则退出
End If
ABookName = path_A & ABookName '加路径组合
BBookName = path_B & BBookName
If Dir(ABookName, 16) = vbNullString Then '检查文件是否存在
MsgBox "未找到 " & ABookName, vbInformation, "提示"
Exit Sub
End If
If Dir(BBookName, 16) = vbNullString Then
MsgBox "未找到 " & BBookName, vbInformation, "提示"
Exit Sub
End If
'文件存在的条件为 Not Dir(ABookName, 16) = vbNullString
Set Wbook1 = Workbooks.Open(ABookName) '打开A文件
Set Wbook2 = Workbooks.Open(BBookName) '打开B文件
Wbook1.Sheets(1).Activate
ActiveSheet.Columns(aCol).Copy '复制列
Wbook2.Sheets(1).Activate
ActiveSheet.Columns(bCol).PasteSpecial '拷贝至目标列
'清空剪贴板,避免关闭文件命令时弹出提示类似“在剪贴板上有大量信息。是否保留其内容,以便此后粘贴到其他程序中?”
Application.CutCopyMode = False '清空
Wbook1.Close '关闭A文件
Wbook2.Save '保存B文件
'Wbook2.SaveAs Filename:="E:\checkB_New.xlsx" '此句测试另存为新文件
Wbook2.Close '关闭B文件
MsgBox "从" & ABookName & "拷贝至" & BBookName & "完成", vbInformation, "提示"
Application.ScreenUpdating = True
End Sub
sheets(1).activate
sheets(1).range("A:C").copy
sheets(2).activate
sheets(2).cells(1,1).select
sheets(2).paste
代码实现功能:把A工作簿的第n列复制到B工作簿的第i列。其中n和i是变量