2012-04-20 49 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