2017-09-11 15 views
-4

我有Workbook_Open事件,这会触发包含大量代码的脚本。它运行时间很长(从网络获取数据),我希望Excel在运行时打开该文件,此VBA还会在状态栏上显示进度。我使用循环,并在每次迭代中使用了DoEvents,但没有任何效果。只有当宏执行成功或者我使用Ctrl +暂停中断时,才会打开文件。任何想法可能是错误的以及如何修复?Excel - 在VBA代码完成前,打开的文件停留在100%,

编辑:我没有附上代码,因为我不是作者,其中有数百行。我曾希望找到一个普遍的原因,为什么会遇到这种情况,遇到类似的人。 重要提示:看起来我从同事处收到的文件的初始版本正常工作,直到我保存该文件,因此代码中没有任何“bug”。使用VBADebugger没有帮助。文件中没有外部连接和名称。

+2

显示您的代码。 – Vityata

+2

寻求调试帮助的问题(“为什么这个代码不工作?”)必须包含所需的行为,特定的问题或错误,以及在问题本身中重现问题所需的最短代码。没有明确问题陈述的问题对其他读者无益。见[mcve]。 –

+0

在这种情况下分布在多个模块中的代码具有如此多的线条,只会令人分心,特别是它在vanilla状态下工作(在保存文件之前没有任何更改)。 –

回答

0

我通过让VBA优先于Workbook_Open事件解决了这个问题。我把Private Sub Workbook_Open整个较早的内容,在“刮”的过程,现在它看起来像这样:

Private Sub Workbook_Open 
    Application.OnTime Now + TimeValue("00:00:01"), "scraper" 
End Sub 

它必须是Excel将不(有时?)执行Workbook_Open事件之前打开该文件。