VB脚本调用Access宏执行完成后报错800A09C5,如何消除该错误?
解决VBS调用Access宏后报错的方案
问题根源
报错是因为宏执行完毕后数据库已自动关闭,但VBS脚本仍尝试访问已失效的Access对象,触发了系统错误提示。
具体解决方法
方法1:添加错误捕获语句
在脚本末尾加入错误忽略指令,避免因对象失效弹出报错:
Set objAccess = CreateObject("Access.Application") objAccess.UserControl = True objAccess.OpenCurrentDatabase("你的数据库文件路径") objAccess.DoCmd.RunMacro "AutoRunAll" On Error Resume Next ' 忽略后续因数据库关闭导致的对象操作错误 Set objAccess = Nothing
方法2:由VBS控制数据库关闭
修改AutoRunAll宏,移除其中关闭数据库的操作,改为在VBS里手动关闭,保证对象操作的完整性:
Set objAccess = CreateObject("Access.Application") objAccess.UserControl = True objAccess.OpenCurrentDatabase("你的数据库文件路径") objAccess.DoCmd.RunMacro "AutoRunAll" objAccess.CloseCurrentDatabase() ' 手动关闭数据库 Set objAccess = Nothing
方法3:先检查对象状态再释放
执行宏后先判断Access对象是否可用,再进行后续操作:
Set objAccess = CreateObject("Access.Application") objAccess.UserControl = True objAccess.OpenCurrentDatabase("你的数据库文件路径") objAccess.DoCmd.RunMacro "AutoRunAll" ' 检查对象状态后再清理 If Not objAccess Is Nothing Then On Error Resume Next objAccess.Quit Set objAccess = Nothing End If
内容的提问来源于stack exchange,提问作者Mark N.
相关产品推荐
相关产品推荐

