我在运行excel宏时遇到问题,因为它导致我的UI冻结。
请考虑以下代码:
Call Run_Test()
Sub Run_Test()
Set oQTP= CreateObject("Quicktest.Application")
oQTP.Open "<Test Path>"
oQTP.Run"<Test Path>"
End Sub
这里的问题是运行上面的Run_Test方法&#34; oQTP.Run&#34;需要一些时间才能完成,在此期间如果点击Excel工作表,UI就会冻结。
那么有什么方法可以异步运行这个方法并防止excel冻结?
或者还有其他技术可以阻止这种情况吗?
答案 0 :(得分:3)
VBA本身不提供对异步编程的任何支持。程序员必须在嵌套循环中显式调用 DoEvents 以允许处理Windows消息队列。
但是,VBA调用的函数库可以提供异步调用。经典ADO提供了将查询调用指定为异步的选项,在调用完成时(成功或不成功)引发事件。
如果您需要自定义代码以异步方式运行,则必须在提供此类支持的环境(例如C#或VB.NET)中对其进行编码,并调用生成的程序集。
答案 1 :(得分:2)
如果您的问题是关于异步运行QTP,则可以指定False
作为WaitOnReturn
方法的Run
参数。