如果我忘了来时的路 2022-11-26 22:09 采纳率: 100%
浏览 37
已结题

VBA怎么把工作簿A中的第N列,复制到工作簿B中的第N列。

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
我的解答思路和尝试过的方法
我想要达到的结果 VBA怎么把工作簿A中的第N列,复制到工作簿B中的第N列。
  • 写回答

3条回答 默认 最新

  • Check_Const 2022-11-27 21:16
    关注

    好像需求描述还有些二义,例如是整列覆盖?还是在目标表对应列最后一行追加?
    是两个独立表格文件两个“工作簿”?
    还是可以理解为同一个文件(工作簿)中的两个不同“工作表”?
    有没有需指定“工作表”中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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月6日
  • 已采纳回答 11月28日
  • 创建了问题 11月26日

悬赏问题

  • ¥50 pc微信3.6.0.18不能登陆 有偿解决问题
  • ¥15 求TYPCE母转母转接头24PIN线路板图
  • ¥100 国外网络搭建,有偿交流
  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集