我有一个由3人组成的团队,他们都使用批处理文件定期运行Access宏,其命令类似于以下命令:
START "" /min /wait "msaccess.exe" "%TEMP%\Database.accdb" /x Main
在以这种方式调用的所有宏的末尾,我们以QuitAccess(退出)操作结束它们。 通常结束Access流程并将控制权交还给批处理文件以继续。
问题是,有时在宏完成后(我们可以告诉它已经完成,因为存在导出的文本/ Excel文件),Access数据库不会关闭,这意味着调用批处理文件被卡住,等待Access关闭
发生这种情况时,我们通过进入任务管理器并终止MSACCESS.EXE进程来修复它。然后批处理文件继续。
我们无法在宏的末尾或之后的批处理文件中执行任何操作来修复此问题,因为进程处于宏和批处理文件之间的状态。
有没有人对如何防止这种情况有任何想法?
答案 0 :(得分:1)
您是否确认宏本身没有产生可能干扰退出程序的错误?我会探索在宏中添加一些错误处理以捕获任何错误。查看" OnError"在宏中的选项,您可以控制何时发生错误并在该步骤中执行您需要的任何操作:即:如果出现错误则退出,如果这是期望的结果
答案 1 :(得分:0)
我不是批处理文件专家,但我没有看到你在任何地方关闭Access数据库。看起来这个链接(Kill MSAccess process via batchfile)正在解决同样的问题。此答案引用了此网站上的解决方案:Opening Access database from Batch File or VBS :
要关闭数据库,您需要编写一个启动功能 它控制你想要运行的所有事件,然后使用Docmd.Quit, 失败,你可以运行另一个.bat文件(使用Windows预定 任务)一或两分钟后使用:TASKKILL / F / IM“MSACCESS.EXE” EXIT