多次使用 SaveAs 冻结 Excel
Multiple uses of SaveAs freezes Excel
我正在处理一个大文件,其中包含跨多个 (100+) 客户端的数据。
需要:
- 生成客户的月度摘要activity。
- 必须采用 Excel 可操作格式。
- 必须是特定于客户的。无法访问其他人的信息。
我的进程有效,但挂起并可能需要 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
我正在处理一个大文件,其中包含跨多个 (100+) 客户端的数据。
需要:
- 生成客户的月度摘要activity。
- 必须采用 Excel 可操作格式。
- 必须是特定于客户的。无法访问其他人的信息。
我的进程有效,但挂起并可能需要 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