我有一個關於ADODB.connection的問題。Excel關閉時會關閉ADODB連接嗎?
我在我的Excel應用程序中使用ADODB連接來連接到Access。我是否需要手動關閉連接,或者在Excel應用程序關閉時自動關閉連接?
如果我需要手動完成,那麼何時何地?我可以在Workbook_BeforeClose事件中編寫代碼嗎?我在Workbook_Open事件中打開連接,並將連接對象聲明爲全局變量。
我有一個關於ADODB.connection的問題。Excel關閉時會關閉ADODB連接嗎?
我在我的Excel應用程序中使用ADODB連接來連接到Access。我是否需要手動關閉連接,或者在Excel應用程序關閉時自動關閉連接?
如果我需要手動完成,那麼何時何地?我可以在Workbook_BeforeClose事件中編寫代碼嗎?我在Workbook_Open事件中打開連接,並將連接對象聲明爲全局變量。
我相信,如果你不明確地關閉連接,甚至如果Excel出口連接將保持打開狀態。
不幸的是,當一個對象超出範圍時,VBA並不是智能的關閉每一個連接等。但是,實際上,最好的做法是關閉每個流和連接,只要不再需要它,當然,在退出/關閉工作簿時,最好仔細檢查連接是開放的,如果是的話,關閉它。這隻會讓您的應用程序更加健壯和可靠。
所以我建議你的是,只要完成一些r/w操作就關閉連接。不要在應用程序閒置時將連接打開(因爲如果excel或系統死機?)。因此,請儘可能將其打開,但要確保在Workbook_BeforeClose
事件處理程序中進行雙重檢查。
'不幸的是,當一個對象超出範圍時,VBA不是那麼聰明的關閉所有連接等等 - 相反,這正是[VBA所做的](http://stackoverflow.com/a/19038890/11683)。 – GSerg
謝謝:)我想現在我明白了。 – Guoliangcai
當您關閉Excel時,連接對象將超出範圍,但最好在代碼中明確關閉它。 –
可能的重複[什麼時候應該將Excel VBA變量殺死或設置爲Nothing?](http://stackoverflow.com/q/19038350/11683) – GSerg
這可能對你很有趣... http://stackoverflow.com/questions/3217014/how-to-secure-store-connection-string-details-in-vba?noredirect = 1&lq = 1我用這種方法連接到ADODB.Connection –