2017-02-22 7 views
0

私はADODB.connectionについて質問があります。Excelが終了してもADODB接続が閉じられますか?

ExcelアプリケーションでAccessに接続するためにADODB接続を使用します。手動で接続を閉じる必要がありますか、またはExcelアプリケーションが終了したときに自動的に閉じられますか?

手動で行う必要がある場合は、いつ、どこで? Workbook_BeforeCloseイベントにコードを記述できますか?私は、Workbook_Openイベントで接続を開き、接続オブジェクトはグローバル変数として宣言されています。私はあなたが明示的に接続を閉じていない場合、接続は終了し優れていても開いたままになります。信じて

+1

Excelを終了すると、接続オブジェクトは範囲外になりますが、明示的にコード内で閉じることをお勧めします。 –

+1

[Excel VBA変数を削除する必要がありますか?Nothingに設定する必要がありますか?](http://stackoverflow.com/q/19038350/11683) – GSerg

+0

これは面白いかもしれません... http://stackoverflow.com/question/3217014/how-to-secure-store-connection-string-details-vba?noredirect = 1&lq = 1このメソッドを使ってADODBに接続します。接続 –

答えて

-1

残念ながら、VBAはオブジェクトが有効範囲外になったときにすべての接続などを閉じるのに賢明ではありません。しかし、それでも、それは最善の方法は、あなたがそれをもはや必要としないときはいつでも、すべてのストリームと接続を閉じることです。もちろん、ワークブックの終了/終了時に、接続の有無を再確認することをお勧めします開いている場合は閉じてください。アプリケーションをより堅牢で信頼性の高いものにするだけです。

だから私はあなたにいくつかのr/w操作が行われるたびに接続を閉じることをお勧めします。アプリケーションがアイドル状態のときに接続を開いたままにしないでください(Excelまたはシステムがフリーズする場合はどうなりますか?)。必然的に必要なだけ開いたままにしておきますが、Workbook_BeforeCloseイベントハンドラで再確認してください。

+1

'残念ながら、VBAは、オブジェクトがスコープから外れたときなど、あらゆる接続を閉じるためにインテリジェントではありません。逆に、それは[まさにVBAが行うことです](http://stackoverflow.com/a/19038890/11683)。 – GSerg

+0

ありがとう:)私は今考えを得たと思う。 – Guoliangcai

関連する問題