Я написал код, который находит все файлы, начинающиеся с определенного имени, и считывает данные из них, обычно в папке обычно находится 1k файлов или больше, я написал небольшой тест и понимаю, что мой код читает aprox 1 файл в секунду, и это очень много времени. Я новичок в vba, и мне было интересно, не ошибся ли я на этом? Код функции:Excel vba чтение большого количества файлов быстрее
Function ReadDataFromWorksheet()
Dim XL As Excel.Application
Dim WBK As Excel.Workbook
Dim i As Integer
i = 1
Set XL = CreateObject("Excel.Application")
Do While i < (ArraySize + 1)
Set WBK = XL.Workbooks.Open("PATH TO FILE")
Array(i).Data1 = WBK.ActiveSheet.Range("F6").Value
WBK.Close SaveChanges:=False
i = i + 1
Loop
Set XL = Nothing
End Function
Извините за мой плохой орфографии ... и спасибо заранее за помощь!
спасибо за answear! но я думаю, что вы неправильно поняли, мой код работает нормально, моя программа работает, и у меня есть циркуль, чтобы получить все пути к моим файлам, проблема в том, что с кодом, который я читал, файлы медленны, я читаю aprox. 135 файлов в минуту, а в папке есть 1k + файлы ... Мне просто интересно, есть ли лучший/быстрый способ сделать это или это единственный способ? –
@ Файлы открытия/закрытия UrošGrum всегда будут медленными. Вы можете ускорить некоторые действия, установив ScreenUpdating в false и перевернув вычисления в ручном режиме до начала цикла. В противном случае Excel не является лучшей платформой для быстрого открытия/закрытия книг. Вы можете сэкономить некоторое время, открыв их партиями ... но этот код будет немного сложнее. – SpaceSteak
@ UrošGrum: Как сказал SpaceSteak, открывающиеся файлы всегда будут довольно медленными даже для маленьких/легких файлов! Поэтому я добавил код для деактивации большинства бесполезных вещей для освобождения памяти для Excel, но это не будет невероятно эффективным! Просто сохранил режим расчета в качестве комментария, я позволил вам выбрать для этого! ;) – R3uK