ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: penghuipan

[求助] 如何将多个工作簿的多个excel表格移动到一个工作簿中

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-11-17 17:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zhaogang1960 发表于 2015-6-1 18:45
下面附件中有2003、2007格式:

大神  可以请教一个具体问题吗,我的问题跟您回答这个很像

TA的精华主题

TA的得分主题

发表于 2021-11-17 17:07 | 显示全部楼层
zhaogang1960 发表于 2015-6-1 18:45
下面附件中有2003、2007格式:

大神 可以清缴个具体问题吗  

TA的精华主题

TA的得分主题

发表于 2021-11-18 11:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zhaogang1960 发表于 2015-6-1 18:45
下面附件中有2003、2007格式:

老师您好,您看这个问题可以解决吗。
如何将多个工作簿的多个excel表格移动到一个工作簿中
https://club.excelhome.net/thread-1606643-1-1.html

TA的精华主题

TA的得分主题

发表于 2025-3-17 09:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
多文件单表合并成单文件多表

test.zip

49.19 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2025-3-17 09:51 | 显示全部楼层
  1. Sub ykcbf()  '//2025.3.17
  2.     Application.ScreenUpdating = False
  3.     Application.DisplayAlerts = False
  4.     Set fso = CreateObject("Scripting.FileSystemObject")
  5.     p = ThisWorkbook.Path & ""
  6.     Set ws = ThisWorkbook
  7.     For Each sh In ws.Sheets
  8.         If sh.Name <> ActiveSheet.Name Then sh.Delete
  9.     Next
  10.     On Error Resume Next
  11.     For Each f In fso.GetFolder(p).Files
  12.         If LCase$(f.Name) Like "*.xls*" Then
  13.             If InStr(f.Name, ws.Name) = 0 Then
  14.                 m = m + 1
  15.                 Set wb = Workbooks.Open(f, 0)
  16.                 fn = fso.GetBaseName(f)
  17.                 If m = 1 Then
  18.                     Set sh = ws.Sheets(1)
  19.                     wb.Sheets(1).Cells.Copy sh.[a1]
  20.                     sh.Name = fn
  21.                 Else
  22.                     wb.Sheets(1).Copy After:=ws.Sheets(ws.Sheets.Count)
  23.                     ws.Sheets(ws.Sheets.Count).Name = fn
  24.                 End If
  25.                 wb.Close 0
  26.             End If
  27.         End If
  28.     Next
  29.     sh.Activate
  30.     Application.ScreenUpdating = True
  31.     MsgBox "ok"
  32. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2025-3-17 10:43 | 显示全部楼层
  1. Sub ProcessWorkbooks()
  2.     Dim fd As FileDialog
  3.     Dim selectedFolder As String
  4.     Dim fileName As String
  5.     Dim srcWorkbook As Workbook
  6.    
  7.     Dim anyCopied As Boolean
  8.    
  9.     ' 初始化标志
  10.     anyCopied = False
  11.    
  12.     ' 优化执行
  13.     Application.ScreenUpdating = False
  14.     Application.DisplayAlerts = False
  15.    
  16.    
  17.    
  18.     ' 步骤1:选择文件夹对话框
  19.     Set fd = Application.FileDialog(msoFileDialogFolderPicker)
  20.     With fd
  21.         .Title = "请选择包含Excel文件的文件夹"
  22.         If .Show = -1 Then
  23.             selectedFolder = .SelectedItems(1) & IIf(Right(.SelectedItems(1), 1) = "", "", "")
  24.              ' 步骤2:删除所有原始工作表(保留临时工作表)
  25.    
  26.                 Do While ThisWorkbook.Worksheets.Count > 1
  27.                     ThisWorkbook.Worksheets(1).Delete
  28.                 Loop
  29.         Else
  30.             MsgBox "未选择文件夹,操作已取消。"
  31.             GoTo CleanUp
  32.         End If
  33.     End With
  34.    
  35.     ' 步骤3:遍历并处理Excel文件
  36.     fileName = Dir(selectedFolder & "*.xls*")
  37.     Do While fileName <> ""
  38.         ' 跳过临时文件
  39.         If Left(fileName, 2) <> "~$" Then
  40.             On Error Resume Next
  41.             Set srcWorkbook = Workbooks.Open(selectedFolder & fileName, ReadOnly:=True)
  42.             
  43.             If Not srcWorkbook Is Nothing Then
  44.                 ' 复制"表1"(按名称匹配)
  45.                 On Error GoTo 0
  46.                
  47.                     srcWorkbook.Worksheets(1).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
  48.                     anyCopied = True
  49.                 srcWorkbook.Close False
  50.             End If
  51.         End If
  52.         fileName = Dir()
  53.     Loop
  54.    

  55.     ' 清理临时工作表
  56.     If anyCopied Then
  57.         Application.DisplayAlerts = False
  58.         ThisWorkbook.Worksheets(1).Delete
  59.         Application.DisplayAlerts = True
  60.    
  61.     End If
  62.     MsgBox "处理完成!共合并 " & ThisWorkbook.Worksheets.Count & " 个工作表"
  63. CleanUp:
  64.     ' 恢复设置
  65.     Application.ScreenUpdating = True
  66.     Application.DisplayAlerts = True
  67.    
  68. End Sub


复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-12-16 05:13 , Processed in 0.020694 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表