簡體   English   中英

為什么我的VBA功能無法正常關閉Access?

[英]Why doesn't my VBA function shut down Access properly?

這個問題與我在這里找到的上一個問題有關: 用於運行ms-Access模塊​​子例程的Python代碼

為了解釋我的問題,我將簡要說明我要做什么:

我使用python和tkinter制作了一個GUI,可以讓用戶選擇不同的搜索條件,然后將這些條件打印到.txt文件中。 然后,python代碼使用以下代碼啟動Access的實例:

objAccess = win32com.client.Dispatch("Access.application")
objAccess.Visible = True
objAccess.OpenCurrentDatabase(filepath)
objAccess.DoCmd.RunMacro("Macro1")

該宏是功能名稱為My_Function()的簡單“ RunCode”命令。 My_Function()讀取.txt文件,對數據庫執行查詢,生成報告,並將報告以pdf格式保存在當前文件夾中,然后使用以下命令關閉Access:

DoCmd.Quit

我很確定這一切都能按預期工作,直到將文件(python腳本和Access數據庫)移動到新文件夾。 移動之后,所有操作都像以前一樣運行,即Access打開一個窗口,根據用戶輸入生成報告,然后關閉。 但是與移動文件之前不同,python控制台(我在Python 2.7中使用Spyder)報告以下異常:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1532, in __call__
    return self.func(*args)
  File "C:/Users/nx71/ProsjektreferanserPython/Test_final/GUI_02_norsk.py",
line 269, in buttonclick2
    objAccess.DoCmd.RunMacro("Macro1")
  File "<COMObject <unknown>>", line 3, in RunMacro
com_error: (-2147352567, 'Exception occurred.', (0, None, u'The | action was canceled.
', None, -1, -2146825787), None)

此外,在運行腳本之后,無法雙擊圖標來打開任何Access數據庫,除非我進入任務管理器,然后選擇單個Access后台進程和“結束任務”。

簡而言之:腳本+宏+函數完成了我想要的操作,但是在我移動文件后,控制台報告了異常,並且Access bacground進程持續存在,並阻止了我打開Access的新實例。

附:我正在使用Windows 10和MS Office 2013。

任何幫助將不勝感激!

謝謝DanL的評論。 它使我走上了正確的軌道。 我認為問題是由VBA函數通過DoCmd.Quit關閉Access引起的,而objAccess在python腳本中仍處於“活動”狀態(原諒我缺乏適當的術語,因為我對編程非常陌生)。

從VBA函數的末尾刪除DoCmd.Quit並在python代碼中的RunMacro之后添加objAccess.Quit()可以給我所需的結果。

我開始懷疑在移動文件之前,它們是否都能正常工作。

再次感謝DanL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM