我知道这个问题之前在各种论坛上都已经被问过(我已经研究这个问题一段时间了),所以我觉得答案可能是“不”,但我想确保我走在正确的轨道上。我有一些相当大的工作簿需要处理(大约 150 万条记录),这涉及到 VBA 访问 Windows 文件系统——这里不太相关,但这确实意味着这是一个漫长的过程(大约 4 个小时)。
问题是 VBA 是否可以在用户看不到/注意到屏幕上发生任何事情的情况下运行。我总是在模块开始时合并以下代码,以便它能够尽可能地运行:
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
ActiveSheet.DisplayPageBreaks = False
Application.DisplayStatusBar = False
ActiveWindow.FreezePanes = False
代码涉及打开工作簿、保存工作簿、从 Windows 文件系统读取和写入数据到工作簿以及在工作簿之间。尽管如此,屏幕上仍然有一个烦人的 Excel 工作簿(尽管完全空白),有时会闪烁。“问题”是 Excel 在某些时候会执行某些操作(我猜是打开或保存工作簿之类的操作),它会打断用户,这是我们不希望发生的。是否可以对其进行编码,以便在代码运行时永远不会打断用户?
我在创建新工作簿时尝试了以下操作,但最终该过程结束时其中没有任何数据,因此我将其视为失败。
Dim wkb2 As Workbook
...
Set wkb2 = Workbooks.Add
wkb2.Windows(1).Visible = False