Использование памяти увеличивается, когда Excel не отвечает - PullRequest
0 голосов
/ 22 сентября 2019

разветвлено из 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

Вопрос

Почему увеличивается использование памяти при зависании процесса?

Замечания

Обратите внимание, что;

  1. * Папка 1025 * содержит 3000 файлов Excel, поэтому цикл выполняется 3000 раз
  2. Размер файла Excel составляет менее 15 КБ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...