У меня есть код для загрузки данных из любого количества рабочих книг, которые мы выбираем и загружаем в текущую рабочую книгу. Он прекрасно работает в отдельности (в файле, где я не выполняю никаких других задач). Тем не менее, когда я использовал этот код в большом файле, где я использую (ссылки) скопированные данные в ряде функций массива, это заняло более двадцати минут, чтобы загрузить 1-2 файла по сравнению с секундами ранее.
Возможно ли это медленно из-за ссылок на другие вкладки с функциями? Я что-то пропустил. Любая помощь будет оценена.
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.AskToUpdateLinks = False
Application.Calculation = xlCalculationManual
Number = 0
IT = 0
Set thisWb = ActiveWorkbook
Set ws = thisWb.Sheets("CF")
thisWb.Sheets("CF").Select
ws.Range(ws.Cells(2, 1), ws.Cells(100000, 42)).ClearContents
Do
files = Application.GetOpenFilename(filefilter:="Excel workbooks (*.csv*),*.csv*", Title:="Select files to import", MultiSelect:=True)
If Not IsArray(files) Then Exit Sub 'Cancel must have been clicked
If UBound(files) < 1 Then
MsgBox "You have not selected any file. Please select files."
End If
Loop Until UBound(files) > 0
Number = UBound(files)
N = Number + N
For IT = 1 To UBound(files)
Workbooks.Open files(IT)
With ActiveWorkbook
Application.CutCopyMode = False
Set wk = ActiveWorkbook.ActiveSheet
.ActiveSheet.Range("A2:AP10000").Copy
'LastRow = wk.Cells(Rows.Count, "A").End(xlUp).Row
thisWb.Activate
ws.Select
LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1
Range("A" & LastRow).Select
Set Rng = ws.Range("A" & LastRow)
Rng.PasteSpecial xlPasteValues
LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1
Application.CutCopyMode = False
.Close False
End With
Next
Все, что может заставить этот код работать быстрее, например, загрузка 3-4 маленьких файлов за минуту, будет идеальным.