【发布时间】:2016-01-04 16:51:15
【问题描述】:
我正在处理一个包含多个 (100 多个) 客户端数据的大文件。
需求:
- 每月生成客户活动摘要。
- 必须采用 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"))
【问题讨论】:
-
如果您尽可能直接引用工作簿/工作表并避免使用ActiveSheet property,您可能能够避免“拖延”循环。 ActiveWorkbook property 可能需要引用在将工作表复制到任何位置时创建的新工作簿。