在Excel2003中,我看到一个奇怪的事情发生在我写的一个宏来自动修改工作簿列表。我有一个12000个工作簿要修改的列表,所以我需要依次打开每个工作簿,在里面做东西,然后保存并关闭。 在处理了大约1000个工作簿(有时还有几百个)之后,Excel就崩溃了。
这是我正在做的伪代码
public sub ProcessWorkbooks()
dim i as Integer
dim targetWorkbook as Workbook
With thisWorkbook.Sheets("Main").Range("A15")
Do While .Offset(i, 0).Value <> ""
set targetWorkbook = Application.Workbooks.Open(.Offset(i, 3).Value)
If targetWorkbook Is Nothing Then
Goto NextIteration
End If
Application.ScreenUpdating = False
Call ProcessWorkbook(targetWorkbook)
Call targetWorkbook.Save
DoEvents
Call targetWorkbook.Close
Application.ScreenUpdating = True
NextIteration:
i = i + 1
Loop
End With
end sub
我的第一个想法是内存泄漏,但后来我认为Excel在崩溃之前应该变得非常慢,但执行速度在崩溃之前保持不变(我没有坐在那里看着几千个工作簿虽然...)。 Excel本身有什么东西会导致这种崩溃吗?也许历史需要清理或类似的东西? 有人曾经发生过这种事吗?