我正在从文件夹内的所有工作簿中提取单元格数据。 在提取过程中,每个循环(工作簿打开/关闭)的内存使用量以大约100〜500KB的稳定速率增长。 从大量文件中提取时,内存使用量约为1.5GB,并弹出运行时错误消息。发生这种情况时,内存使用率下降,脚本继续运行。 试图对脚本的每个步骤进行注释,以发现占用内存的内存(注释是从单元格读取并打印到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