Change to
Sub test()
Dim myDir As String, e, temp, x, i As Long, ii As Long
Dim cn As Object, rs As Object, ws As Worksheet
myDir = ThisWorkbook.Path & "\"
For Each e In Array("East", "North", "South", "West")
If Dir(myDir & e & ".xlsx") <> "" Then temp = e: Exit For
Next
For Each ws In Worksheets
ws.Cells(1).CurrentRegion.Offset(1).ClearContents
Next
If temp = "" Then MsgBox "No matched files in """ & myDir & """": Exit Sub
Application.ScreenUpdating = False
Sheets("main").Cells(1).CurrentRegion.Offset(1).ClearContents
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
With cn
.Provider = "Microsoft.Ace.OLEDB.12.0"
.Properties("Extended Properties") = "Excel 12.0;HRD=Yes"
.Open myDir & temp & ".xlsx"
End With
Sheets("main").Cells(1).CurrentRegion.Offset(1).ClearContents
For Each e In Array("East", "North", "South", "West")
If Dir(myDir & e & ".xlsx") <> "" Then
For i = 1 To 10
x = ExecuteExcel4Macro("'" & myDir & "[" & e & ".xlsx]sheet" & i & "'!r1c1")
If Not IsError(x) Then
If Not Evaluate("isref('sheet" & i & "'!a1)") Then Sheets.Add(, Sheets(Sheets.Count)).Name = "Sheet" & i
With Sheets("sheet" & i)
rs.Open "Select * From `Sheet" & i & "$` In '" & myDir & e & ".xlsx" & _
"' 'Excel 12.0;''HDR=Yes;'''", cn, 3
For ii = 0 To rs.Fields.Count - 1
.Cells(1, ii + 1) = rs.Fields(ii).Name
Next
With .Range("a" & Rows.Count).End(xlUp)(2)
.CopyFromRecordset rs
.Resize(rs.RecordCount).EntireRow.Copy Sheets("Main").Range("a" & Rows.Count).End(xlUp)(2)
End With
rs.Close
End With
End If
Next
End If
Next
Application.ScreenUpdating = True
Set rs = Nothing: Set cn = Nothing
End Sub
Bookmarks