当前位置:文档之家› 汇总不同子目录下Excel文件的方法

汇总不同子目录下Excel文件的方法

汇总不同子目录下Excel文件的方法
江西新干县第四中学蒋松涛
日常工作中,经常要处理Excel表单数据,其中将多个Excel文件数据汇总到一个文件中的情况时有发生,如果文件数量少,我们采用复制、粘贴的方法就可以轻松解决,但如果文件数量多,有成百上千且不在同一目录中时,复制、粘贴方法显然行不通。

下面介绍的方法就是专门处理Excel文件数量多,且不在同一目录中的汇总问题。

步骤:
1、新建一个文件夹,如“d:\huizong”。

2、在此文件夹下新建一个空白Excel文件,如“汇总.xls”(注
意:文件名不能与子目录下需要汇总的文件名相同,否则与之相同名字的子文件的数据将不会采集)。

3、将所有要汇总的子目录复制到此文件夹(如“d:\huizong”)
中。

4、打开汇总文件(如“汇总.xls”),右击表单“sheet1”,选“查
看代码”,将下面代码粘贴到打开的代码窗口中(代码附在文章末尾处)。

此处为汇总文件路径,如果新建目录不同,修改此
处代码。

5、点菜单栏上的“工具”下的“宏”、“安全性”按钮,将安全性
改为“低”。

6、点菜单栏上的“运行”下的“运行子过程/用户窗口”按钮即
可或点工具栏上的“运行”按钮。

附:代码
Private Sub CommandButton1_Click()
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder("D :\huizong") Set fc = f.SubFolders
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
For Each f1 In fc
MyPath = f & "\" &
MyName = Dir(MyPath & "\" & "*.xls")
AWbName =
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.Close False
End With
End If
MyName = Dir
Loop
Range("A1").Select
Application.ScreenUpdating = True
Next
MsgBox "共合并了" & Num & "个工作薄下的全部工作表。

如下:" & Chr(13) & WbN, vbInformation, "提示"
End Sub 此处为汇总文件路径,如果新建目录不同,修改此处代码。

相关主题