• ベストアンサー

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 」を付けるとコンパイルエラーになります。 違いがわかりません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >変数の宣言の「 New 」はどういう意味なのでしょうか? >何のためにつけるのでしょうか? Excel VBAなどでは、ADO は、常時用意されていないオブジェクトですから、事前バインディングでは(参照設定した後)、New キーワードをつけてインタンスとして実体化し、オブジェクトを生成します。それをつけないと、オブジェクトにならないのです。既存に存在するものには、変数にNew キーワードは不要です。 ただ、Excelのような限定されたメモリ空間ですと、頻繁に使うような場合は、[Dim cn As New ADODB.Connection]では、オブジェクトの開放の場を失ってしまうように思います。簡単に使う程度では、Excel自体を終了してしまいますが、常時多用するような場合は、こうした部分も管理しなければならない時があります。

bkshfu
質問者

お礼

オブジェクトにするためにNewを付けるのですね!ありがとうございます。

その他の回答 (1)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

ヘルプの「Dim ステートメント」のページに説明が書いてありますよ。 私は、Dim に New キーワードを使うことを推奨しません。 Dim cn As ADODB.Connection Set cn = New ADODB.Connection とすべきです。

bkshfu
質問者

お礼

ありがとうございます。読んでみます。

関連するQ&A