VBA和Excel并行运行

这是我一直以来的问题,但从来没有真正给过这个问题。

我现在所拥有的是一个显示数据的工作表,用户在需要时刷新。 所以:

  1. 用户触发一个VBA函数
  2. VBA函数收集数据并分析WHILE USER WAITS
  3. VBA函数在电子表格上转储结果
  4. 用户继续查看数据

由于数据分析全部是在VBA内部完成的(不使用工作簿,只有logging集,数组,库等),我想以某种方式允许用户继续查看原始数据,而VBA则用于获取和分析新的数据。

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

那么我可以不知何故让我最初的Excel实例调用另一个Excel实例,并让我在第一次工作时运行VBA?

有任何想法吗?

(另外,不确定标签“multithreading”技术上是否正确)

我还没有尝试过,但似乎可以使用Application.FollowHyperLink从VBA启动Excel。 超链接必须是表单的本地path。 您可能必须先使用VBA制作工作表副本。

你有没有想过通过并发问题有两个副本?

首先 – 在Excel中没有VBA的multithreading。 第二件事情 – 从Excel 2007开始,Excel支持multithreading重新计算公式。

因此,要在Excel中处理multithreading计算,您至less可以做两件事情:

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

我的build议 – select2。