Dim FSO As Object, FileItem As Object, cn As Object, rs As Object, SubFolder As Object
Sub kieumanh(SourceFolderName As String, IncludeSubfolders As Boolean)
Dim query As String
Const ExcelExtension As String = "|xls|xlsb|xlsm|xlsx|"
Set FSO = CreateObject("Scripting.FileSystemObject")
With FSO
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
For Each FileItem In .GetFolder(SourceFolderName).Files
If InStr(ExcelExtension, "|" & .GetExtensionName(FileItem.Path) & "|") Then
If Left(FileItem.Name, 1) <> "~" And FileItem.Path <> ThisWorkbook.FullName Then
With cn
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FileItem.Path & ";Extended Properties=""Excel 12.0 Xml;HDR=NO;IMEX=1"";"
.Open
End With
query = " SELECT * FROM [GPE$A2:J200]"
rs.Open query, cn
Range("A" & Range("A65000").End(3).Row + 1).CopyFromRecordset rs
rs.Close: cn.Close
End If
End If
Next FileItem
If IncludeSubfolders Then
For Each SubFolder In .GetFolder(SourceFolderName).SubFolders
kieumanh SubFolder.Path, True
Next SubFolder
End If
End With
Set rs = Nothing: Set cn = Nothing
Set FileItem = Nothing
Set FSO = Nothing
End Sub
Sub run()
Range("A2:J" & Range("A65000").End(3).Row).Clear
Call kieumanh("E:\", True)
Call kieumanh("D:\", True)
End Sub