当前位置: 首页 > news >正文

vb copy target range

Sub BatchMergeExcelFiles()
Dim sourceFolder As String
Dim newWorkbook As Workbook
Dim sourceWorkbook As Workbook
Dim fileDialog As fileDialog
Dim targetRow1 As Long ' new.xlsx Sheet1的目标粘贴行
Dim targetRow2 As Long ' new.xlsx Sheet2的目标粘贴行

' 1. 选择目标文件夹(手动选择,避免硬编码路径)
Set fileDialog = Application.fileDialog(msoFileDialogFolderPicker)
With fileDialog
.Title = "请选择要遍历的文件夹"
If .Show <> -1 Then Exit Sub
sourceFolder = .SelectedItems(1) & "\"
End If

' 2. 创建新工作簿 new.xlsx
Set newWorkbook = Workbooks.Add
newWorkbook.SaveAs Filename:=sourceFolder & "new.xlsx", FileFormat:=xlOpenXMLWorkbook

' 初始化目标粘贴行(从第1行开始)
targetRow1 = 1
targetRow2 = 1

' 3. 遍历文件夹内所有xlsx文件
Dim fileName As String
fileName = Dir(sourceFolder & "*.xlsx")

Application.ScreenUpdating = False ' 关闭屏幕更新,提升效率
Application.DisplayAlerts = False ' 关闭弹窗提示

Do While fileName <> ""
' 跳过新建的new.xlsx,避免自循环
If fileName <> "new.xlsx" Then
' 打开源文件
Set sourceWorkbook = Workbooks.Open(sourceFolder & fileName)

' ========== 复制 Sheet1!B7:G8 到 new.xlsx Sheet1 ==========
With sourceWorkbook.Worksheets("Sheet1")
.Range("B7:G8").Copy
newWorkbook.Worksheets(1).Range("A" & targetRow1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
targetRow1 = targetRow1 + 2 ' 每次复制2行,目标行递增2

' ========== 复制 Sheet1!B51:G58 到 new.xlsx Sheet2 ==========
With sourceWorkbook.Worksheets("Sheet1")
.Range("B51:G58").Copy
newWorkbook.Worksheets(2).Range("A" & targetRow2).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
targetRow2 = targetRow2 + 8 ' 每次复制8行,目标行递增8

' 关闭源文件,不保存修改
sourceWorkbook.Close SaveChanges:=False
End If

' 读取下一个文件
fileName = Dir
Loop

' 收尾操作
Application.CutCopyMode = False
Application.ScreenUpdating = True
Application.DisplayAlerts = True
newWorkbook.Save ' 保存new.xlsx
newWorkbook.Close

MsgBox "批量合并完成!" & vbCrLf & "新文件路径:" & sourceFolder & "new.xlsx", vbInformation

' 释放对象
Set sourceWorkbook = Nothing
Set newWorkbook = Nothing
Set fileDialog = Nothing
End Sub

http://www.jsqmd.com/news/94306/

相关文章:

  • Symfony 8服务注册中心性能优化指南(提升响应速度300%)
  • Luogu9099 [PA 2020] Ogromne drzewo
  • Doyensec实习记:安全研究与应用渗透实战剖析
  • Spring 解决循环依赖是否需要第三级缓存?
  • 智能制造新生态:从技术整合到效率跃迁的实战方案
  • 2026亚洲展剧透:3D打印机+玩具潮玩,下一个百万级市场正在孵化
  • sklearn函数总结十 —— 决策树
  • Font Awesome 图表图标
  • 知网AIGC检测算法升级了?深度测评这10款降AI率工具,总结出几个亲测好用的工具
  • 【内存优化终极指南】:揭秘高性能系统背后的8大内存管理技术
  • 揭秘农业物联网数据瓶颈:如何用PHP优化传感器数据存储性能
  • 自学嵌入式day31,waitpid,system 函数
  • 8、Linux系统中的用户、组管理与文件权限设置
  • Font Awesome 性别图标
  • 2025年数据中心芯片领域最热门发展趋势
  • 泛型继承实战指南(高级程序员必知的3个隐秘特性)
  • 【气象数据异常识别终极指南】:掌握R语言极端值检测的5大核心方法
  • 从补课依赖到动能重生:解码青少年厌学背后的家庭能量闭环
  • 为什么你的微服务无法在AOT模式下运行:3大兼容性瓶颈全曝光
  • R与Python模型融合结果对比(权威验证框架曝光)
  • Python 设计模式:拦截器 - 指南
  • 低代码时代PHP配置存储如何选型:3种方案对比与最佳实践
  • 如何利用微信个人号API接口进行二次开发?
  • java计算机毕业设计实体店管理系统 基于Java的线下门店综合运营平台 SpringBoot+MySQL服饰实体店铺数字化管理系统
  • 4、Linux 命令行与文件系统导航全解析
  • R语言克里金插值实战指南(环境监测数据处理的黄金标准)
  • 为什么你的应用越跑越慢?内存碎片正在悄悄吞噬资源
  • 5、Linux 文件压缩、归档与文本文件管理全解析
  • 萤石开放平台 国标设备接入 | 三方品牌设备接入文档/宇视IPC对接文档
  • java计算机毕业设计实验室设备管理系统的设计与实现 基于SpringBoot的高校实验仪器全生命周期管理平台 Java Web实验资源与设备智能调度系统