Excel Workbook Close не освобождает память - PullRequest
0 голосов
/ 09 апреля 2019

Я извлекаю данные ячейки из всех рабочих книг в папке.Во время извлечения использование памяти увеличивается с постоянной скоростью около 100 ~ 500 КБ каждый цикл (рабочая книга открыта / закрыта).При извлечении из большого количества файлов объем используемой памяти достигает 1,5 ГБ и появляется сообщение об ошибке во время выполнения.Когда это происходит, использование памяти падает, и скрипт продолжает работать.Пытался прокомментировать каждый шаг от скрипта, чтобы узнать, что захватывает память, (комментарий читается из ячейки и печатается в csv), вырезал скрипт до тех пор, пока не открылась и не закрылась часть скрипта.

Есть ли способ освободитьиспользование памяти?Я новичок в vba, и извините, но английский не мой родной язык, не стесняйтесь меня поправлять.

Подчеркнутый скрипт только с открытой и закрытой частью, без объявления переменных.

Sub Open_Close_xls_memory_test()
Application.ScreenUpdating = False
Application.EnableEvents = False
Path = "C:\Users\"
Filename = Dir(Path & "*.xls")
t = Now
i = 0
Do While Filename <> ""
    If Filename <> ThisWorkbook.Name Then
    i = i + 1
    Application.StatusBar = i
        Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
        Workbooks(Filename).Close
    End If
    Filename = Dir()
Loop
MsgBox i & " files in " & vbNewLine & Format(Now() - t, "hh:mm:ss")
Shell "explorer.exe """ & Target & "", vbNormalFocus
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...