我有4个MS Access数据库,每个数据库都写入相同的精确宏。这些宏需要大约4个小时才能运行,我想设置它们以便在我不工作时运行它们。
我设想我的批处理文件看起来像这样:
msaccess.exe /ro "c:\Folder1\DB1.accdb" /x MyMacro
msaccess.exe /ro "c:\Folder2\DB2.accdb" /x MyMacro
msaccess.exe /ro "c:\Folder3\DB3.accdb" /x MyMacro
msaccess.exe /ro "c:\Folder4\DB4.accdb" /x MyMacro
但是,我只想在当前行完成时启动下一行。有没有办法控制这个?
我选择了START / WAIT命令。我不得不修改MyMacro以在每次运行后关闭MS Access,但它就像一个魅力。谢谢大家!
答案 0 :(得分:0)
我以前使用VBS做了类似的事情,将文件保存为.vbs,然后使用任务计划程序在特定时间运行它。这将适用于Subs和Functions。请参阅下面的vbs代码,您只需添加2个部分即可为其提供总共4个数据库。
dim accessApp
set accessApp = createObject("Access.Application")
accessApp.visible = false
accessApp.OpenCurrentDataBase("Database Path Here")
accessApp.Run "Sub or Function Name Here"
accessApp.Quit
set accessApp = nothing
dim accessApp2
set accessApp2 = createObject("Access.Application")
accessApp2.visible = false
accessApp2.OpenCurrentDataBase("Database Path Here")
accessApp2.Run "Sub or Function Name Here"
accessApp2.Quit
set accessApp2 = nothing
答案 1 :(得分:0)
此脚本将在DB_LIST
中的每个数据库上运行,如果出现错误则停止。这是你要找的东西吗?
SETLOCAL ENABLEDELAYEDEXPANSION
SET "DB_LIST=DB1 DB2 DB3 DB4"
FOR %%d IN (%DB_LIST%) DO (
msaccess.exe /ro "c:\Folder4\%%~d.accdb" /x MyMacro
SET EXITCODE=%ERRORLEVEL%
IF !EXITCODE! NEQ 0 (
ECHO ERROR: Failed in %0 running database %%~f, EXITCODE is !EXITCODE!
GOTO TheEnd
)
)
:TheEnd
EXIT /B %EXITCODE%
答案 2 :(得分:0)
我选择了START / WAIT命令。我不得不修改MyMacro以在每次运行后关闭MS Access,但它就像一个魅力。谢谢大家!
我的代码最终看起来像这样:
START /WAIT msaccess.exe /ro "c:\Folder1\DB1.accdb" /x MyMacro
START /WAIT msaccess.exe /ro "c:\Folder2\DB2.accdb" /x MyMacro
START /WAIT msaccess.exe /ro "c:\Folder3\DB3.accdb" /x MyMacro
START /WAIT msaccess.exe /ro "c:\Folder4\DB4.accdb" /x MyMacro