VBScript似乎在等待Excel Macro完成?

时间:2016-04-26 14:17:05

标签: excel vba excel-vba vbscript

我对VBScript很新,所以想与更有经验的用户核实我的理解:)

我编写了一个运行excel宏的基本脚本。宏被称为MainFlow,然后在说完之后会出现一个消息框。代码如下。

现在令我惊讶的是,看起来VBScript等待宏MainFlow完全运行,然后转到下一个语句,在这种情况下是一个消息框说完了。这真让我感到惊讶,因为根据我的经验,我原本期望VBScript能够立即进入下一个声明。由于这将成为更广泛的批处理过程的一部分,我想在继续之前检查我的理解。我知道要从一个主脚本运行多个VBScripts,我需要使用waitonreturn布尔值来确保每个脚本在下一个脚本启动之前已经完成,这就是让我惊讶于明显等待宏完成脚本本身。

如果有人能够证实我的理解(甚至解释原因),那将非常感激。

dim xlApp, xlBook 
Set xlApp = createobject("excel.application") 
xlApp.displayalerts = false 
Set xlbook = xlapp.workbooks.open("G:\Clients\Client\Reporting\Automated\Futures Expiry    Warning\All Futures Expiry.xlsm") 
xlapp.run "MainFlow" 
msgbox("Finished") 
xlbook.save 
xlbook.close false 
Set xlbook = nothing 
xlapp.quit 
Set xlApp = nothing

4 个答案:

答案 0 :(得分:1)

VBScript将等待Excel VBA代码完成执行,然后再继续。

答案 1 :(得分:1)

这种方法有用吗? (放在这里进行格式化)

Derived

答案 2 :(得分:1)

VBA不是多任务的,所以我不知道为什么在完成MainFlow之前它会回到你的初始代码。

有时DoEvents(在MainFlow中)看起来VBA一次只做两个任务,但事实并非如此。 (在某些情况下,它甚至会减慢过程,或者使速度更快,具体取决于问题)

如果你不喜欢Excel'冷冻' ,制作进度条,以便用户不会认为Excel崩溃,并想要中止......

没有查看MainFlow代码,我无法说清楚。

答案 3 :(得分:1)

在Open Function中将ReadOnly参数设置为false已经为我做了诀窍

e.g。

Set objExcelBook = objExcel.Workbooks.Open(xlsFile, false)