多次使用 SaveAs 冻结 Excel

Multiple uses of SaveAs freezes Excel

我正在处理一个大文件,其中包含跨多个 (100+) 客户端的数据。

需要:

我的进程有效,但挂起并可能需要 10 到 45 分钟的时间。

故障排除后我知道问题出在 SaveAs 方法上。评论所述行并仍然允许生成和关闭文件不会导致挂断。

For i = 1 to Number_of_clients

    'Data is sorted and placed in report tab (not shown)

    'Code ensures only report tab is saved with no access to other data
    ActiveSheet.Copy
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=Filename
    ActiveWorkbook.Close
    Application.DisplayAlerts = True

Next i

我目前为缓解此问题所做的尝试是暂停应用程序,以便后台进程可以执行它们的操作。我在 SaveAs 行之后添加了以下代码。

Application.Wait (Now + Timevalue("0:00:05"))

"...pause the application so background processes can do their thing."

你试过了吗DoEvents

这会将控制权交还给操作系统,并允许它在代码执行恢复之前完成任何未决事件。如果您处于锁定的循环中,您绝对应该使用它,以便您可以手动中断代码执行。


ActiveWorkbook.SaveAs Filename:=Filename
DoEvents
ActiveWorkbook.Close False

更多信息:DoEvents in VBA