2012-04-20 118 views
2

HI我正在运行Python 2.6.5中的MS Access(2010)宏。它正在成功运行宏,但accdb文件未正确关闭。它在我的宏运行后显示.laacdb文件和.accdb文件。我认为做CloseCurrentDatabase和Quit语句会做到这一点,但他们不是。重新启动计算机后.laacdb文件消失。谢谢。objAccess.Application.Quit在尝试关闭Access数据库时不能正常工作使用python

from win32com.client import Dispatch 
strDbName = "C:\\converter\\MainConverter.accdb" 
objAccess = Dispatch("Access.Application") 
objAccess.Visible = False 
objAccess.OpenCurrentDatabase(strDbName) 
objDB = objAccess.CurrentDb() 
objAccess.DoCmd.RunMacro('Export_to_PDF') 
objAccess.Application.CloseCurrentDatabase() 
objAccess.Application.Quit 

回答

1

在VBA中,我们经常设置对象变量为Nothing来处理它们。在Python中,请尝试明确删除变量objAccess

del objAccess 

对不起,我的Python由于废用而生锈,所以也许我的语法错了。但是这样的事情可能会有帮助。

此外,我不记得你是否需要一个括号后.Quit方法。尝试像这样以防万一:

objAccess.Application.Quit() 

如果objDB仍持有到访问应用/数据库的引用,删除它。

del objDB 

但是,如果你没有真正在你真正的代码中使用它别处,刚才消除objDB干脆。

+0

谢谢! 是的,我使用objAccess.Application.Quit()和del objDB – Andrew 2012-04-20 18:54:57

+0

'对不起,我的Python已经从废弃中生锈'仍然在第一次去; + 1):) – 2012-04-21 07:14:06