
Originally Posted by
nav112
There are 1500 employees, as time goes on more employees will submit their overtime sheet
Try
Sub test()
Dim myDir As String, fn As String, n As Long, cn As Object, rs As Object, ws As Worksheet, i As Long
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show Then myDir = .SelectedItems(1): n = 1
End With
If myDir = "" Then Exit Sub
Set ws = ThisWorkbook.Sheets("sheet1")
ws.Rows("3:" & Application.Max(ws.Cells.SpecialCells(11).Row, 3)).Clear
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
fn = Dir(myDir & "\*.xls*")
Do While fn <> ""
If n > 1 Then ws.Rows("1:2").Copy ws.Rows(n)
For i = 1 To 4
ws.Cells(n + 2, i) = "='" & myDir & "\[" & fn & "]sheet1'!d" & i + 6
ws.Cells(n + 2, i + 4) = "='" & myDir & "\[" & fn & "]sheet1'!j" & i + 6
Next
cn.ConnectionString = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & myDir & "\" & fn & ";Extended Properties=""Excel 12.0;HDR=No;"""
cn.Open
rs.Open "Select * From `Sheet1$H15:O` Where F1 Is Not Null;", cn, 3
ws.Cells(n + 2, "I").CopyFromRecordset rs
n = n + rs.RecordCount + 4: rs.Close: cn.Close
fn = Dir
Loop
Set cn = Nothing: Set rs = Nothing
End Sub
Bookmarks