如何合并把多个excel表数据合并文件

6641人阅读
script(3)
& & & &今天一同学突然在Q上问起我如何将多个Excel文件合并到一个Sheet文件中,起初我是想通过编程来实现的,因为之前我用C++实现过一个Excel操作类的封装,也用该类实现过一些自动化工具。但考虑到这本来是个很简单的任务,相信Excel本身应该可以实现,于是度娘了下,找到了可以使用VBA来解决,但网上的代码要不有问题,要不操作不明白,经过摸索,决定写篇文章,让像我一样的小白用户从零来完成任务。
& & & & &一、创建E:\test_excel目录,下面放上几个要合并的Excel文件。
& & & & &二、新打开一个Excel文件,先“开启开发工具”,如下图点击1,选择“Excel选项”,然后在“常用”选项卡中勾选“在功能区显示‘开发工具’选项卡”,保存后,就能看到了。
& & & & 三、开启宏,如上图所示,开发工具—宏安全性—宏设置里面。
& & & & 四、在Visual Basic里面选择&Sheet1&,并编写相应的宏
相关代码:
'VBA for merge excel files,.just support for Excel 2007
'Excel 2003 need change the codes
'Author:naiveloafer
Sub naiveloafer()
Dim fs, f, f1, fc, s, x, rowss, columnss
Set fs = CreateObject(&Scripting.FileSystemObject&)
Set f = fs.GetFolder(&E:\test_excel\&) 'Directory of excel files will be merge
Set fc = f.Files
For Each f1 In fc
If Right(f1.Name, 4) = &xlsx& Then
Workbooks.Open (f1.Path)
rowss = Workbooks(f1.Name).Sheets(1).Range(&A65536&).End(xlUp).Row
columnss = Workbooks(f1.Name).Sheets(1).Columns.Count
Workbooks(f1.Name).Sheets(1).Range(&A1:z& & CStr(rowss)).Copy
Workbooks(1).Activate
Workbooks(1).Sheets(1).Range(&A& & CStr(x) & &:z& & CStr(x + rowss)).Select
Workbooks(1).Sheets(1).Paste
Application.CutCopyMode = False
x = x + rowss
Workbooks(f1.Name).Close savechanges:=False
& & & &五、回到刚才的Excel中,点击宏,选择刚才的宏,运行即可,如果代码没问题,那就能在当前Sheet中显示合并的结果,当然如果你有编程经验可以选择调试才定位问题,修改等。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:54725次
排名:千里之外
原创:16篇
(1)(2)(1)(1)(6)(1)(1)(3)查看: 10528|回复: 12
[已解决]快速将多个EXCEL中的所有SHEET放在同一个EXCEL中不同SHEET?
如题,如果有EXCEL1和EXCEL2,分别各有3个SHEET,如何快速将这6个SHEET放在一个EXCEL中的不同SHEET中,SHEET名同以前
网上搜到的办法,超好用!
将这些文件copy到一个文件夹(只有这些Excel,且若打开某一文件,数据就能看见——即不用点其他sheet),建一新Excel,把Sheet1起名”空表“,其他Sheet删除。也存到该文件夹。仅打开该新Excel,按Alt+F11,点菜单的插入,模块,粘贴如下代码:
Sub Find()
Application.ScreenUpdating = False
Dim MyDir As String
MyDir = ThisWorkbook.Path & &\&
ChDrive Left(MyDir, 1) 'find all the excel files
ChDir MyDir
Match = Dir$(&&)
If Not LCase(Match) = LCase(ThisWorkbook.Name) Then
Workbooks.Open Match, 0 'open
ActiveSheet.Copy Before:=ThisWorkbook.Sheets(1) 'copy sheet
Windows(Match).Activate
ActiveWindow.Close
activesheet.name =&Sheet& & i
Match = Dir$
Loop Until Len(Match) = 0
Application.ScreenUpdating = True
点菜单上面的播放按钮,文件copy完成
看看是不是这个意思吧!
a.gif (175.39 KB, 下载次数: 15)
20:04 上传
windimi007 发表于
看看是不是这个意思吧!
是你这个意思,但不知有没有更好的方法,因为有时有几十个EXCEL,如果用这种方法太累了,比如用VBA?本人不太懂
老大给的这个方法已经是我知道最快的了。
一个工作薄里你放那么多的表干什么,万一哪天打不开了,可就真的打不开
有人会用VBA来解决这个问题吗?
&&&本楼为最佳答案&&&
网上搜到的办法,超好用!
将这些文件copy到一个文件夹(只有这些Excel,且若打开某一文件,数据就能看见——即不用点其他sheet),建一新Excel,把Sheet1起名”空表“,其他Sheet删除。也存到该文件夹。仅打开该新Excel,按Alt+F11,点菜单的插入,模块,粘贴如下代码:
Sub Find()
Application.ScreenUpdating = False
Dim MyDir As String
MyDir = ThisWorkbook.Path & &\&
ChDrive Left(MyDir, 1) 'find all the excel files
ChDir MyDir
Match = Dir$(&&)
If Not LCase(Match) = LCase(ThisWorkbook.Name) Then
Workbooks.Open Match, 0 'open
ActiveSheet.Copy Before:=ThisWorkbook.Sheets(1) 'copy sheet
Windows(Match).Activate
ActiveWindow.Close
activesheet.name =&Sheet& & i
Match = Dir$
Loop Until Len(Match) = 0
Application.ScreenUpdating = True
点菜单上面的播放按钮,文件copy完成
看帖回贴是一种美德···
usf 发表于
网上搜到的办法,超好用!
将这些文件copy到一个文件夹(只有这些Excel,且若打开某一文件,数据就能看见 ...
这段代码看不懂啊,木办法,继续学习
usf 发表于
网上搜到的办法,超好用!
将这些文件copy到一个文件夹(只有这些Excel,且若打开某一文件,数据就能看见 ...
如果要合并的EXCEL中都只有一个SHEET或是说只需合并各EXCEL当前SHEET,这个办法是很好,但如果每个EXCEL中本来就有多个SHEET全都要合并在一个EXCEL中,怎么办呢,另最好合并后的SHEET名与之前相同,有高手能在此代码上作些修改吗??
这样还是有问题,sheet的顺序不对,怎么保证还按之前的顺序粘贴呢
|||Excel精英培训
Powered by2011年6月 Windows专区大版内专家分月排行榜第三2011年1月 Windows专区大版内专家分月排行榜第三2010年11月 Windows专区大版内专家分月排行榜第三2010年2月 Windows专区大版内专家分月排行榜第三2010年1月 Windows专区大版内专家分月排行榜第三
2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
本帖子已过去太久远了,不再提供回复功能。怎样把多个EXCEL表格合并成一个EXCEL表格
怎样把多个EXCEL表格合并成一个EXCEL表格
我有多个EXCEL表,但是他们都是分了多个EXCEL文档,一个EXCEL文档只有一张表格,我想把多个EXCEL变成一个EXCEL里面有很多页,也就是把多页放在一个EXCEL里,但是那些表格怎么移过来呢,请高手指教!
补充:按照你这样说的,我只能移一个EXCEL,我想移多个EXCEL,为什么移不了呢,怎么都只能移一个啊???高手指教!我想把多个EXCEL一起移到一个EXCEL怎么移不了呢?
补充:我不是要表格合并,是要文档合并啊!
补充:我不想下载工具箱,有没有什么可以在EXCEL里就能完成的啊!帮帮忙啦!
补充:怎么说得这么复杂,SOSO用户 说得有点道理,就差那么一点,为什么只能移一个EXCEL,怎样移多个EXCEL呢???各位指教啊!
同时打开目标文件,如你要把EXCEL1、电视维修资料、EXCEL2.....等复制到“电视机维修记录.xls”中。先把这些文件打开,然后将窗口切换到“电视维修资料.xls”在工作表名称--右键---移动或复制工作表(M)..----在弹出的窗口中选择 电视机维修记录.xls,移动至最后,建立副本前面的勾打,确定就可以啦。其它的重复上面的做法就可以。
我怎么只能移动一个EXCEL,我有多个EXCEL,怎样才能放到一个EXCEL里面一起啊,你的办法我怎么只能移过来一个,第二个,第三个就移不过来了呢?
的感言:谢谢你
略懂社热议
先复制后粘贴!
直接都打开,然后复制在一个里面啊!
创建多个页面啊!....
要移到其中一张表格只能一张一张复制粘贴过来了;表格里面都自动有三张工作表,如果少了可以在工作表(sheet1)任意一张工作表上右击点"移动或复制工作表",在选(移至最后),把"建立副本"前的框选住,按确定就可以添加工作表了.
顺着复制粘贴就行了啊!
新建一个工作表,命名后保存到和与合并的100个文件同一个文件文件夹,摁 alt + f11,双击工程资源管理器里面的sheet1(sheet1),在右侧的代码区粘贴如下代码。运行。等候一会就OK了。 Sub 合并当前目录下所有工作簿的全部工作表() Dim MyPath, MyName, AWbName Dim Wb As Workbook, WbN As String Dim G As Long Dim Num As Long Dim BOX As String Application.ScreenUpdating = False MyPath = ActiveWorkbook.Path MyName = Dir(MyPath & "\" & "*.xls") AWbName = ActiveWorkbook.Name Num = 0 Do While MyName && "" If MyName && AWbName Then Set Wb = Workbooks.Open(MyPath & "\" & MyName) Num = Num + 1 With Workbooks(1).ActiveSheet .Cells(.Range("A65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4) For G = 1 To Sheets.Count Wb.Sheets(G).UsedRange.Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1) Next WbN = WbN & Chr(13) & Wb.Name Wb.Close False End With End If MyName = Dir Loop Range("A1").Select Application.ScreenUpdating = True MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示" End Sub
用这个方法试试!朋友说行的!
建议你下载一个Excel必备工具箱,安装成功后会在Excel文件菜单上生成一个“工具箱”。第一步:将多个工作簿内的每一张表合并到一个工作簿:点工具箱→工具集锦→汇总→文件合并→确定→选中你需要合并的所有文件(鼠标左键点需要合并的第一个文件,然后按Shift不松,鼠标左键点需要合并的最后一个文件)→上移、下移调整好位置→确定。第二步:将一个工作薄内多个工作表合并:点工具箱→工具集锦→汇总→表格合并→确定→来自当前文档→请指定处理范围(根据你表格的具体情况设置)→确定→指定数据来源(按你的要求将需要合并的表格打钩→确定
完成第一步就完成了你的文档合并
没有更好的办法,“Excel必备工具箱”没有任何插件,非常实用,尤其是对经常使用电子表格的人。
略懂社热议
等待您来回答
微软专区领域专家
&SOGOU - 京ICP证050897号

我要回帖

更多关于 把多个excel表数据合并 的文章

 

随机推荐