我给你这个程序是在一个文件夹下的XLS文件内容合并,你可以改一下以使一个文件内的工作薄合并,你先看懂了,以后自己想怎么改都行:
打开一个新的EXCEL文件,只要在EXCEL宏里运行以下代码(里面的文件夹地址一定要改成你要合并的EXCEL所在的文件夹地址)
Sub cfl()
Dim fs, f, f1, fc, s, x, rowss, columnss
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder("D:\test\asdfg\") '存放文件的目录
Set fc = f.Files
x = 1
For Each f1 In fc
If Right(f1.Name, 3) = "xls" 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
End If
Next
End Sub
补充:
1.无论在哪里打开一个新的EXCEL文件(此文件保存合并后的数据),然后点击EXCEL菜单栏里的“工具”/“宏”/VB编辑器(V),在“VB编辑器”中将以上代码复制进去
2.将程序里第四行的(Set f = fs.GetFolder("D:\test\asdfg\") '存放文件的目录 )里的路径名改成你所要合并EXCEL文件所在的文件夹路径名
3.运行(里面的文件夹地址一定要改成你要合并的EXCEL所在的文件夹地址)
这样的问题,就只能用常规的办法了,用宏已经验证很难编出来的。
我提供的合并方法:能够做到:保留原有表格的一切格式和样式,能够保留原有sheet的名称,但是不能生成原有工作簿的名称。
===============================
这样来合并:打开几个工作簿,打开要汇总的文件工作簿。
在逐个的打开的工作簿的shhet上,单击右键→移动或复制工作表→在上面的将选定的工作表移至---选择合并的那个工作簿名称。在下面的--下列的选中工作表之前,修改为最后。或者根据你的要求,选默认的最前面也行。
=========
为了不出错,建议完成一个复制,关闭一个文件。完成一组了。重新打开后面的一组,比如一组打开20个文件。