Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 12205|回复: 12

[已解决]同文件夹多工作簿多工作表不同单元格内容提取

[复制链接]
发表于 2013-5-26 16:20 | 显示全部楼层 |阅读模式
大家好:
       请教个同文件夹多工作簿多工作表不同单元格内容提取的问题:
       我有一个如附件的模板,单元格内容都是固定的,只是这样的模板可能有几百个,我现在想把这几百个模板里的的固定单元格的内容(比如姓名,性别,生日,籍贯等信息)提取出来放在一个新的工作簿的工作表里的一行,请问用VBA该怎么做了?
       谢谢大家了! 汇总.zip (24.19 KB, 下载次数: 201)
发表于 2013-5-26 16:35 | 显示全部楼层

表格格式要完全相同。

本帖最后由 1091126096 于 2013-5-26 17:08 编辑
  1. Sub 合并当前目录下所有工作簿的全部工作表()
  2. '申明变量
  3. Dim MyPath, MyName, AWbName
  4. Dim Wb As Workbook, WbN As String
  5. Dim G As Long
  6. Dim Num As Long
  7. Dim BOX As String
  8. '关闭更新以提高速度
  9. Application.ScreenUpdating = False
  10. '获取当前目录
  11. MyPath = ActiveWorkbook.Path
  12. '获取当前目录下所有excel文件
  13. MyName = Dir(MyPath & "" & "*.xls")
  14. '获取活动excel名称
  15. AWbName = ActiveWorkbook.Name

  16. 'Num用以记录合并excel数量
  17. Num = 0
  18. '开始合并,合并目录时不处理当前excel
  19. Do While MyName <> ""
  20. If MyName <> AWbName Then
  21. Set Wb = Workbooks.Open(MyPath & "" & MyName)
  22. Num = Num + 1
  23. With Workbooks(1).ActiveSheet
  24. '处理当前工作簿上所有的工作表,其中,除第一个表格以外不复制第一行表头,复制位置在当前表格最下一行
  25. If Num = 1 Then
  26. For G = 1 To Sheets.Count
  27. Wb.Sheets(G).UsedRange.Copy .Cells(.Range("A65536").End(xlUp).Row, 1)
  28. Next
  29. Else
  30. For G = 1 To Sheets.Count
  31. Wb.Sheets(G).UsedRange.Offset(1, 0).Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1)
  32. Next
  33. End If

  34. WbN = WbN & Chr(13) & Wb.Name
  35. Wb.Close False
  36. End With
  37. End If
  38. MyName = Dir
  39. Loop
  40. Range("A1").Select
  41. Application.ScreenUpdating = True
  42. MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"
  43. End Sub

复制代码

评分

参与人数 1 +1 收起 理由
beijiren368 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-5-26 17:06 | 显示全部楼层
谢谢太阳之子,但是程序运行后,从第二个记录开始,姓名那一栏没了,我再研究研究!
回复

使用道具 举报

发表于 2013-5-26 17:09 | 显示全部楼层
beijiren368 发表于 2013-5-26 17:06
谢谢太阳之子,但是程序运行后,从第二个记录开始,姓名那一栏没了,我再研究研究!

表格格式要完全相同。
回复

使用道具 举报

发表于 2013-5-26 17:16 | 显示全部楼层    本楼为最佳答案   
本帖最后由 ligh1298 于 2013-5-26 17:31 编辑

楼主:是不是想要这样的?见附件!
提示:1.删除“汇总.xlsx”文件或将其移到他处。  
   2.只需要打开“汇总.xlsm”文件,启用宏,点击按钮完成。

汇总.rar

37.54 KB, 下载次数: 497

评分

参与人数 1 +1 收起 理由
beijiren368 + 1 就是这样,非常感谢!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-5-26 22:51 | 显示全部楼层
ligh1298 发表于 2013-5-26 17:16
楼主:是不是想要这样的?见附件!
提示:1.删除“汇总.xlsx”文件或将其移到他处。  
   2.只需要打 ...

您好!
代码里这句[b65536].End(3).Row请问该怎么理解了?可否帮忙详细讲解,不胜感激!


回复

使用道具 举报

发表于 2013-5-26 22:57 | 显示全部楼层
B列最后一个非空单元格的行号.
等同:
Range("B65536").End(xlUp).Row
回复

使用道具 举报

 楼主| 发表于 2013-5-26 22:58 | 显示全部楼层
sliang28 发表于 2013-5-26 22:57
B列最后一个非空单元格的行号.
等同:
Range("B65536").End(xlUp).Row

您的意思是XLUP也可以写为3?
回复

使用道具 举报

发表于 2013-5-26 23:00 | 显示全部楼层
是的,我一般都是写3的.
回复

使用道具 举报

 楼主| 发表于 2013-5-26 23:02 | 显示全部楼层
sliang28 发表于 2013-5-26 23:00
是的,我一般都是写3的.

非常感谢您的解答!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-12 16:16 , Processed in 0.389294 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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