重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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 」を付けるとコンパイルエラーになります。

違いがわかりません。
よろしくお願いします。

A 回答 (2件)

こんにちは。



>変数の宣言の「 New 」はどういう意味なのでしょうか?
>何のためにつけるのでしょうか?

Excel VBAなどでは、ADO は、常時用意されていないオブジェクトですから、事前バインディングでは(参照設定した後)、New キーワードをつけてインタンスとして実体化し、オブジェクトを生成します。それをつけないと、オブジェクトにならないのです。既存に存在するものには、変数にNew キーワードは不要です。

ただ、Excelのような限定されたメモリ空間ですと、頻繁に使うような場合は、[Dim cn As New ADODB.Connection]では、オブジェクトの開放の場を失ってしまうように思います。簡単に使う程度では、Excel自体を終了してしまいますが、常時多用するような場合は、こうした部分も管理しなければならない時があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/07/18 13:00

ヘルプの「Dim ステートメント」のページに説明が書いてありますよ。


私は、Dim に New キーワードを使うことを推奨しません。

Dim cn As ADODB.Connection
Set cn = New ADODB.Connection

とすべきです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/07/18 12:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています