Option Explicit Private Sub GatherStage1SITE() Windows("Control.xls").Activate Sheets("SITE").Select If ActiveSheet.AutoFilterMode = True Then ActiveSheet.AutoFilterMode = False With Range("A3:IV65536") .ClearContents End With Application.ScreenUpdating = False Application.EnableEvents = False Dim i As Integer, wb As Workbook With Application.FileSearch .NewSearch .LookIn = "\\ukta03\transfer\Monitoring\" .SearchSubFolders = True .Filename = "*.xls" .Application.DisplayAlerts = False .Execute For i = 1 To .FoundFiles.Count Set wb = Workbooks.Open(Filename:=.FoundFiles(i), ReadOnly:=True) Run "GatherStage2SITE" wb.Close savechanges:=False Next i End With Application.EnableEvents = True Application.ScreenUpdating = True End Sub Private Sub GatherStage2SITE() Sheets("Submitted_Calls").Select If Range("A3") <> "" Then Dim lastrow As Long Application.ScreenUpdating = False lastrow = Cells(Rows.Count, "A").End(xlUp).Row With Range("A3:IV" & lastrow) .Copy End With Windows("Control.xls").Activate Sheets("SITE").Select Range("A65536").Select Selection.End(xlUp).Select ActiveCell.Offset(1, 0).Select ActiveSheet.Paste End If End Sub
I currently have the above code it opens each file looks at the Submitted_Calls sheets, sees if there is any value a3, if there is it copys all data from a3 to lastrow of that sheet, the only problem here is these files are now massive and each file one and close takes forever an update which took 9 miutes before now takes and 1 hour, is there any better way of doing thuis