разветвлено из Workbooks.Open вызывает утечку памяти
Справочная информация
Я расследую причину утечки памяти, возникшую в следующем кодеи обнаружил, что это происходит, когда Excel не отвечает.Через некоторое время после запуска этого кода я вижу, что процесс Excel «не отвечает» в диспетчере задач, и процесс начинает пожирать память.
Sub Test01()
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim f As File
Dim wb As Workbook
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim Files As Variant
Set Files = fso.GetFolder("*****").Files
For Each f In Files
Set wb = Workbooks.Open(f.Path)
wb.Close savechanges:=False
Set wb = Nothing
Next
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Когда я добавляю DoEvents
в цикле, Excel никогда не зависает, и использование памяти увеличивается медленно.
For Each f In Files
DoEvents
Set wb = Workbooks.Open(f.Path)
wb.Close savechanges:=False
Set wb = Nothing
Next
Вопрос
Почему увеличивается использование памяти при зависании процесса?
Замечания
Обратите внимание, что;
- * Папка 1025 * содержит 3000 файлов Excel, поэтому цикл выполняется 3000 раз
Размер файла Excel составляет менее 15 КБ