- ベストアンサー
ADO 「NEW」の意味、必要性
ADOを使ってACCESSやSQLサーバーへ接続する時に Option Explicit Sub ADO() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset cn.Open "Provider=SQLOLEDB;Data Source=○○○\SQLEXPRESS;Initial Catalog=test;Integrated Security=SSPI" rs.Open "table1", cn, adOpenStatic, adLockOptimistic というようなコードを書きますが、 変数の宣言の「 New 」はどういう意味なのでしょうか? 何のためにつけるのでしょうか? あえて「 New 」を取ると、 「オブジェクト変数または With ブロック変数が設定されていません。」 というエラーになります。 普通の変数(Dim table名 As String)に 「 New 」を付けるとコンパイルエラーになります。 違いがわかりません。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >変数の宣言の「 New 」はどういう意味なのでしょうか? >何のためにつけるのでしょうか? Excel VBAなどでは、ADO は、常時用意されていないオブジェクトですから、事前バインディングでは(参照設定した後)、New キーワードをつけてインタンスとして実体化し、オブジェクトを生成します。それをつけないと、オブジェクトにならないのです。既存に存在するものには、変数にNew キーワードは不要です。 ただ、Excelのような限定されたメモリ空間ですと、頻繁に使うような場合は、[Dim cn As New ADODB.Connection]では、オブジェクトの開放の場を失ってしまうように思います。簡単に使う程度では、Excel自体を終了してしまいますが、常時多用するような場合は、こうした部分も管理しなければならない時があります。
その他の回答 (1)
- KenKen_SP
- ベストアンサー率62% (785/1258)
ヘルプの「Dim ステートメント」のページに説明が書いてありますよ。 私は、Dim に New キーワードを使うことを推奨しません。 Dim cn As ADODB.Connection Set cn = New ADODB.Connection とすべきです。
お礼
ありがとうございます。読んでみます。
お礼
オブジェクトにするためにNewを付けるのですね!ありがとうございます。