有没有办法在Excelmacros中运行asynchronous方法?
我在运行excelmacros时遇到了麻烦,因为它导致我的UI冻结。
考虑下面的代码:
Call Run_Test() Sub Run_Test() Set oQTP= CreateObject("Quicktest.Application") oQTP.Open "<Test Path>" oQTP.Run"<Test Path>" End Sub
这里的问题是,当运行上面的Run_Test方法“oQTP.Run”需要一些时间来完成,在这段时间,如果单击Excel表单的UI冻结。
那么有什么办法可以asynchronous运行这个方法,并防止Excel冻结?
或者还有其他的技术来防止这种情况发生吗?
VBA本身不提供对asynchronous编程的支持。 程序员必须在嵌套循环内显式调用DoEvents以允许处理Windows消息队列。
但是,VBA调用的函数库可能会提供asynchronous调用。 传统的ADO通过提供将查询调用指定为asynchronous的选项,在调用完成(成功或失败)时引发一个事件。
如果您需要自定义代码asynchronous运行,则必须在提供此类支持的环境(如C#或VB.NET)中编写代码,然后调用生成的程序集。
如果你的问题是关于asynchronous运行QTP,你可以指定False
作为Run
方法的WaitOnReturn
参数。
看到这个答案进一步的细节 。