如何根据时间在流程之间切换?
++++
我有一个Excel宏向Google发送XML请求,它有3个重要的过程。
宏当前正在使用sleep函数(来自kernel32.dll)来延迟进程,而DoEvents函数则确保两个进程都运行(因此可以在后台修改应用程序)。
实施例。过程1
Do While True
Call doSomething
DoEvents 'handles processes 2 and 3
Sleep 100
Loop
此方法会延迟整个应用程序。由于100毫秒的延迟,在后台编辑Excel工作表是滞后的,并且尝试退出程序也会延迟。
要消除此延迟,我希望进程2和3运行,并在发送请求时将控制权切换到进程1。发送请求后,进程1可以将程序控制权交还给进程2和3.是否有人有解决方案?
奖金:VBA似乎没有多线程/处理的能力,但如果有人能够想到一种方法来立即运行所有这些进程我很想知道它
答案 0 :(得分:1)
您正在寻找的每件事都涉及到实施细节,但通过搜索可以轻松找到它们。所以我会为你的每个问题提出一个方法。
Application.OnTime
触发宏在给定时间间隔后运行。Shell
调用它来执行它。这样您就可以继续执行现有宏,并且用户重新获得对UI的控制权,但脚本会在后台获取新数据。上述各点的大量示例均可在此网站上以及其他地方通过Google获取。