我打算在VBA中打开一个大的Excel文件后总是添加DoEvents?

我有一些大的文件,我需要打开(但我不需要写一个循环(否则,我一定会去DoEvents))。 这些文件包含许多数据和计算,并可能有很多链接要更新(如果我手动打开它们,我可以等待一段时间)。 然后,我应该添加DoEvents每当我打开一个大文件如下,

Sub Test() ... Dim wb As Workbook Set wb = Workbooks("Large Workbook.xlsm", 3) DoEvents Dim wb2 As Workbook Set wb2 = Workbooks("Large Workbook2.xlsm", 3) DoEvents .... End Sub 

这取决于你想要达到的目标。 我通常只在处理器密集型循环中添加DoEvents,所以如果我需要中断代码,我可以。 它很大程度上有利于防止Excel崩溃或防止“不响应”屏幕。

也就是说,Excel有自己的打开大文件的方式。 如果它真的是一个大文件,你可能已经看到了一个下载的百分比。 这是Excel加载和设置文件。

一般来说,如果你得到一个粉刷过的屏幕,或者Excel一直崩溃,并且想从应用程序中获得一些控制权,那么添加一个DoEvents命令。 否则,只要让你的代码做它需要做的事情。

每次都是两个相同的文件吗? 如果是的话,那么我的build议就是解决文件本身的大小问题,而不是试图掩盖问题。 我写了几篇博客文章,其中包括简单的事情,可以大大减less文件大小和处理器耗用量,而不会丢失文件本身的任何数据。 有时您可以减less文件大小和处理器的消耗,而不会丢失数据。 请参阅以下链接:

http://chandoo.org/wp/2013/09/29/i-said-your-spreadsheet-is-really-fat-not-real-phat/

http://chandoo.org/wp/2014/03/03/handle-volatile-functions-like-they-are-dynamite/