I need to consolidate data from two worksheets in 2,700 workbooks into two worksheets in one workbook.
I have code that works well enough, but after a varying number of loops it crashes Excel.
It makes it through anywhere from 10 files up to 40 or so.
I do not receive any error messages in Excel. Excel simply crashes, as if it was terminated from Task Manager.
I included the sub and the function called within it to determine if a worksheet exists.
Sub SheetCopier()
Dim wb As Workbook
Dim tbl As ListObject
Dim CurrentFile As Variant
Dim LoadRows As Double
Dim AuditRows As Double
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Path = "C:\Desktop\FileList\"
Set tbl = Worksheets("FileList").ListObjects("FileList")   'table spring all of the files to loop through
counter = 2    'starts the counter so the file list can be updated for progress
For Each CurrentFile In tbl.ListColumns("Name").DataBodyRange
    LoadRows = 0
    AuditRows = 0
    
    Set wb = Application.Workbooks.Open(Filename:=Path & CurrentFile, UpdateLinks:=False)  'opens the data file
        
    'Copies data from the LOAD sheet
    If SheetExists(wb, "LOAD") Then  'calls the SheetExists function to determine if the sheet exists
        wb.Sheets("LOAD").Select
        Range("A1").Select
            
        If Range("A1").Value <> "" And Range("A2").Value <> "" Then 'if there is actual information in the load sheet
            Range(Range("A2"), Range("A2").SpecialCells(xlLastCell)).Select 'select all cells in the load sheet except for the header row
            LoadRows = Selection.Rows.Count 'count how many rows there are
            Range("S2:S" & LoadRows + 1).Value = CurrentFile 'appends the filename to the rows that are being copied
            Range(Range("A2"), Range("A2").SpecialCells(xlLastCell)).Copy 'copy the rows
                
            ThisWorkbook.Activate 'come back to the main workbook
                
            Sheets("LOAD").Select 'go to the LOAD sheet in the main workbook
            Range("A1").Select 'go to this workbooks load sheet
            Cells(Range("A2").SpecialCells(xlLastCell).Row + 1, 1).Select 'go to the last row on the load sheet
            ActiveSheet.Paste 'paste the data
            tbl.Range.Cells(counter, 3) = LoadRows 'mark the number of rows copied on the file list
        End If
    End If
        
    wb.Activate 'go back to the target file to copy from
        
    'Copeis data from the AUDIT RESULTS sheet
    If SheetExists(wb, "AUDIT RESULTS") = True Then
        wb.Sheets("AUDIT RESULTS").Select
        Range("A1").Select
            
        If Range("A1").Value <> "" And Range("A2").Value <> "" Then 'if there is actual information in the audit sheet
            Range(Range("A2"), Range("A2").SpecialCells(xlLastCell)).Select 'select all cells in the load sheet
            AuditRows = Selection.Rows.Count 'count how many rows there are
            Range("AA2:AA" & AuditRows + 1).Value = CurrentFile 'appends the filename to the rows that are being copied
            Range(Range("A2"), Range("A2").SpecialCells(xlLastCell)).Copy 'copy the rows
                
            ThisWorkbook.Activate 'come back to this workbook
                
            Sheets("AUDIT RESULTS").Select
            Range("A1").Select 'go to this workbooks load sheet
            Cells(Range("A2").SpecialCells(xlLastCell).Row + 1, 1).Select 'go to the last row on the load sheet
            ActiveSheet.Paste 'paste the data
            tbl.Range.Cells(counter, 4) = AuditRows 'mark the number of rows copied
        End If
    End If
    
    wb.Close SaveChanges:=False  'close the target file
    
    Set wb = Nothing
    
    If counter Mod 10 = 0 Then ThisWorkbook.Save 'save the main file every 10 loops (because of the crashes)
    
    counter = counter + 1
    
Next
Set tbl = Nothing
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Function SheetExists(wb As Workbook, strSheetName As String) As Boolean
Dim wks As Worksheet
For Each wks In wb.Worksheets
    If wks.Name = strSheetName Then
        SheetExists = True
        Exit Function
    End If
Next
SheetExists = False
End Function
Tried changing various aspects of the loops, same result.
 
     
    