我对VBScript相当陌生,所以想向更有经验的用户检查一下我的理解:)
我编写了一个基本脚本来运行excel宏。宏名为MainFlow,然后在声明完成后出现一个消息框。代码在下面。
现在,让我感到惊讶的是,VBScript似乎在等待宏MainFlow完整运行,然后转到下一条语句,在本例中是一个消息框,表示已完成。这确实让我感到惊讶,因为根据我的经验,我希望VBScript会立即进入下一个声明。由于这将是一个更广泛的批处理过程的一部分,我想检查我的理解之前,我继续。我知道,对于从一个主脚本运行多个VBScripts,我需要使用等待返回布尔值,以确保每个脚本在启动下一个脚本之前已经完成,这使我感到惊讶的是,显然等待宏在脚本本身内完成。
如果有人能证实我的理解(甚至解释原因),那将是非常感谢的。
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发布于 2016-04-26 14:31:29
VBScript将在继续之前等待Excel代码完成执行。
发布于 2016-04-26 14:35:36
这个方法有用吗?(放在这里进行格式化)
fnShellExecuteVB
function fnShellExecuteVB()
dim objShell
dim o
set objShell = CreateObject("shell.application")
objShell.ShellExecute "excel.exe", "C:\DUMMY\x.xlsx", "", "open", 1
set objShell = nothing
end function发布于 2016-04-27 08:19:26
VBA不是多任务,所以我不明白为什么它会在完成MainFlow之前返回到您的初始代码。
有时,一个DoEvents (在MainFlow中)使它看起来像是VBA一次执行两个任务,但它不是。(在某些情况下,它甚至会减缓进程,或使其更快,取决于问题)
如果你不喜欢Excel‘冻结’,做一个进度条,这样用户就不会认为Excel崩溃了,并且想要中止.
如果没有看到MainFlow代码,我就无法知道更多。
https://stackoverflow.com/questions/36867626
复制相似问题