У меня есть макрос, который копирует данные из листа 1 выбранных книг в лист 1 этой основной книги в последней строке. Для небольшого количества файлов это быстро, но когда я выбираю больше файлов (скажем, 20), он ломается и превосходит даже сбои. Как сделать это более эффективным, так как я уже использую Application.EnableEvents и ScreenUpdating?
Sub Copy_From_Workbooks()
Dim numberOfFilesChosen, i As Integer
Dim tempFileDialog As FileDialog
Dim sourceWorkbook As Workbook
Dim loLastRow As Long
Application.EnableEvents = False
Application.ScreenUpdating = False
Set tempFileDialog = Application.FileDialog(msoFileDialogFilePicker)
tempFileDialog.Filters.Add "Excel Files", "*.xlsx?", 1
tempFileDialog.AllowMultiSelect = True
numberOfFilesChosen = tempFileDialog.Show
For i = 1 To tempFileDialog.SelectedItems.Count
Workbooks.Open tempFileDialog.SelectedItems(i)
Set sourceWorkbook = ActiveWorkbook
If ActiveWorkbook.Worksheets(1).Range("A1") <> "" Then
With ActiveWorkbook.Worksheets(1)
With .Cells(1).CurrentRegion
.Offset(1).Resize(.Rows.Count - 1, .Columns.Count - 1).Copy
End With
End With
End If
With ThisWorkbook.Worksheets("Sheet1")
loLastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Range("A" & loLastRow).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
'ThisWorkbook.Save
End With
sourceWorkbook.Close
Next i
Application.EnableEvents = False
Application.ScreenUpdating = True
End Sub