Multithreading VBA与Excel并行运行

Multithreading VBA与Excel并行运行,multithreading,excel,vba,Multithreading,Excel,Vba,这个问题我一直都有,但从来没有真正提出过 我现在拥有的是一个显示数据的工作表,用户可以随时刷新。因此: 用户触发VBA函数 VBA函数在用户等待时收集数据并进行分析 VBA函数将结果转储到电子表格中 用户继续查看数据 由于数据分析都是在VBA内部完成的(不使用工作簿,仅使用记录集、数组、库等),因此我希望能够以某种方式允许用户继续查看原始数据,同时VBA负责获取和分析新数据 我知道您不能同时使用工作簿和运行VBA,但您可以有两个excel实例,在一个工作簿上工作,而另一个运行VBA 那么,我可以

这个问题我一直都有,但从来没有真正提出过

我现在拥有的是一个显示数据的工作表,用户可以随时刷新。因此:

  • 用户触发VBA函数
  • VBA函数在用户等待时收集数据并进行分析
  • VBA函数将结果转储到电子表格中
  • 用户继续查看数据
  • 由于数据分析都是在VBA内部完成的(不使用工作簿,仅使用记录集、数组、库等),因此我希望能够以某种方式允许用户继续查看原始数据,同时VBA负责获取和分析新数据

    我知道您不能同时使用工作簿和运行VBA,但您可以有两个excel实例,在一个工作簿上工作,而另一个运行VBA

    那么,我可以让我的原始excel实例调用另一个excel实例,并让它在我处理第一个实例时运行VBA吗

    有什么想法吗


    (另外,不确定标记“Multithreading”在技术上是否正确)

    我还没有尝试过这个方法,但您似乎可以使用从VBA启动Excel。超链接必须是图纸的本地路径。您可能还必须先使用VBA制作图纸的副本


    您是否考虑过拥有两个副本的并发性问题?

    首先,Excel中没有VBA的多线程处理。 第二件事-自Excel2007以来,Excel支持公式的多线程重新计算

    因此,要在Excel中进行多线程计算,您至少可以做两件事:

  • 创建Excel的第二个实例(新的应用程序实例!不是同一应用程序中的新工作簿!)并远程执行宏
  • 在VBA中创建自定义函数(用户定义函数)。不幸的是,不能使用UDF编辑其他单元格,但可以将计算结果保存在全局变量中,然后打印结果

  • 我的建议-选择选项2。

    我刚刚尝试了选项1,我可以在第二个实例上访问工作簿(将newExcel设置为New Excel.Application),但在第二个实例上运行宏时,第一个实例会等待其完成。没有办法在后台运行?(类似于后台查询刷新)运行第二个Excel,然后使用Shell。查看这些链接:我正在运行shell,就像在第二个链接()上一样,但是我用来shell第二个链接的excel实例仍然在xlApp上等待。运行“宏”行,直到xlApp完成宏的运行。查看第一个链接,似乎有一种方法可以使用WScript继续运行,而不是等待返回,但它是针对可执行文件的,因此不确定如何插入Excel文件,请勾选此项: