如何同时运行两个不同的Access数据库宏?

时间:2015-08-07 13:56:56

标签: ms-access vbscript

下面的脚本有效,但是如何让脚本运行这两个数据库'宏在同一时间?

set oaccess1 = createobject("access.application")
oaccess1.opencurrentdatabase "C:\support_db3_created.accdb"
set oaccess2 = createobject("access.application")
oaccess2.opencurrentdatabase "p:\public\ryan simmons\access\support_db4_completed.accdb"
oaccess1.docmd.runmacro "runmacro"
oaccess2.docmd.runmacro "runmacro"
oaccess1.closecurrentdatabase
oaccess2.closecurrentdatabase
oaccess1.quit
oaccess2.quit
set oaccess1=nothing
set oaccess2=nothing

x=msgbox("Script Completed!" ,0, "Alert!")

1 个答案:

答案 0 :(得分:0)

你不能。 VBScript不允许脚本内的并发。如果需要并行执行,则需要运行两个脚本。如果需要,您可以使用文件或注册表值来同步两个脚本:

脚本A:

'do stuff

Set sh = CreateObject("WScript.Shell")
sh.RegWrite "HKCU\Software\test\syncpoint", 1, "REG_DWORD"

'do other stuff

脚本B:

Const HKCU = &h80000001
Set reg = GetObject("winmgmts://./root/default:StdRegProv")

'do stuff

'wait for script A to create the registry value
Do
  rc = reg.GetDWORDValue(HKCU, "Software\test", "syncpoint", v)
  WScript.Sleep 100
Loop Until rc = 0 And Not IsNull(v)

'do other stuff