【发布时间】:2014-07-20 07:04:15
【问题描述】:
在我的 Excel 子程序中,我正在调用在后台运行的 Access 子程序(数据库未打开)并更新数据库中的表。一切都很完美,除了我的 Excel 子程序在 Access 完成运行它是我从 Excel 调用的子程序之前不会继续执行下一行代码。所以,我的问题是……有没有办法从 Excel Sub 中调用/运行 Access Macro/Sub 过程,并让 Excel 继续执行其余代码,而不必等待 Access Macro/sub 到完成才能继续?代码:如下:
Set acObj = CreateObject("Access.Application")
acObj.Application.Visible = False
acObj.OpenCurrentDatabase "C:\Intraday Data\Intraday.accdb"
acObj.Application.Run "RunData"
MsgBox "Done!"
所以基本上我想立即获得完成提示,而无需等待 30 秒才能完成访问过程......任何人对此有任何见解,他们可以与我分享吗? 谢谢!
【问题讨论】:
-
这可能取决于 Access 例程的功能。如果您可以使用 ADO 复制它,则可以异步运行它。
-
Access 例程只是运行生成表查询来更新带有更新数据的表...
-
我相信 ADO 中的异步连接只能按照针对服务器的预期运行(例如,在单独的进程中)。基本问题是进程线程,进程(应用程序)中的所有调用都排队;单个线程不能同时执行 2 个操作。另一种方法是脚本方法:stackoverflow.com/questions/4814294/…
-
否 - 您也可以使用 Access 来完成。请参阅下面的示例代码。
-
你说得对,Rory,我已经有一段时间没有和 ADO 合作了!感谢您的复习,并对不正确的陈述表示歉意:) 我相信关于流程的观点仍然存在,但我认为 ADO 创建了一个单独的流程以使这成为可能