基于时间的vba切换过程

基于时间的vba切换过程,vba,excel,delay,Vba,Excel,Delay,如何根据时间在流程之间切换 ++++ 我有一个Excel宏向Google发送XML请求,它有3个重要的过程 发送XML请求的进程。此过程限制为每秒10个请求 一个能够退出程序的加载条 Excel应用程序本身(程序运行时应可编辑) 宏当前使用sleep函数(来自kernel32.dll)来延迟进程,使用DoEvents函数来确保两个进程都已运行(因此可以在后台修改应用程序) 例:过程1 Do While True Call doSomething DoEvents 'handles

如何根据时间在流程之间切换

++++

我有一个Excel宏向Google发送XML请求,它有3个重要的过程

  • 发送XML请求的进程。此过程限制为每秒10个请求
  • 一个能够退出程序的加载条
  • Excel应用程序本身(程序运行时应可编辑)
  • 宏当前使用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似乎没有多线程/处理的能力,但如果有人能想到一种方法来同时运行所有这些进程,我很想了解它

    对于您正在寻找的每一件事情,实现细节都非常复杂,但可以通过搜索轻松找到它们。因此,我将为您的每个问题提出一种方法

  • 使用
    Application.OnTime
    触发宏在给定时间间隔后运行
  • 可以执行多个线程,但这很棘手。你也需要这样做
    • 调用另一个Excel实例并使其运行您的宏,这样您的主线程就不会受到影响或损坏
    • 将宏放入一个单独的文本文件(vb脚本文件),并通过
      Shell
      调用get-execute。这样,您可以继续执行现有宏,用户将重新控制UI,但脚本将在后台获取新数据
    • 在单独的Excel实例中执行部分代码,然后通过DDE(较旧但相当可靠的技术)或构建RTD服务器将结果输入当前电子表格

  • 以上每一点的示例都可以在本网站和谷歌的其他网站上找到。

    我可能使用了错误的术语,我非常感谢您指出这些术语。时间不适用于毫秒