当前位置: 首页 > 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.gsyq.cn/news/104845.html

相关文章:

  • Spring 解决循环依赖是否需要第三级缓存?
  • 自学嵌入式day31,waitpid,system 函数
  • 8、Linux系统中的用户、组管理与文件权限设置
  • Luogu9099 [PA 2020] Ogromne drzewo
  • 低代码时代PHP配置存储如何选型:3种方案对比与最佳实践
  • Ubuntu系统中查询显卡的生产日期
  • 5个关键R包搞定甲基化数据分析,生物信息新手也能快速上手
  • 为什么你的RNA-seq结果总出问题?R语言质控缺失可能是主因
  • 90%农学研究人员忽略的R语言技巧:方差分析结果精准解读
  • 2025年12月国内GEO营销服务商选型深度分析 - 2025年品牌推荐榜
  • 为什么90%的农业IoT项目都低估了PHP在异常过滤中的作用?
  • Laravel 13多模态任务队列实战指南(从入门到生产级落地)
  • C# Winform打造视觉缺陷检测框架:新能源与3C行业的利器
  • 基于SpringBoot + Vue的物流管理系统设计与实现
  • ToB 系统设计需要考虑的因素
  • 多模态校验时代来临:Laravel 13如何彻底改变PHP应用的数据验证方式?
  • 【R量子模拟实战指南】:掌握门操作序列的5大核心技巧
  • 护眼灯排名前十的品牌有哪些?年度权威榜单出炉,护眼效果超强!
  • Python实现深海声弹射路径仿真
  • 【AI编程】Qoder快速开发小程序
  • 如何安全迁移至PHP 8.6?揭秘企业级兼容性测试流程与工具推荐
  • 基于模型预测控制的ACC巡航车队仿真:Matlab与CarSim的完美结合
  • 多模态缓存清理全解析,Laravel 13开发者必须掌握的3种高阶技巧
  • 软件开发全流程注意事项:避坑指南与效率提升
  • 从传感器到图表:PHP实现农业数据实时可视化的5个关键步骤
  • 开放土壤光谱库:建立可复制的土壤校准模型(PLOS ONE,2025)
  • 在前端中list.map的用法
  • 自动驾驶—CARLA仿真(10)tutorial_gbuffer demo
  • Google Vids:由AI驱动的工作视频创作 | ProductHunt 今日热榜 - 12月15日
  • 【专家亲授】低代码环境下PHP组件动态更新的8个最佳实践