Excel VBA から使用する ADO(ActiveX Data Objects)、およびその中核である ADODB
オブジェクトの主なメソッド について、初心者にもわかりやすく解説します。
目次
🔷 主要なADODBオブジェクトと主なメソッド
オブジェクト | 概要 | 主なメソッド |
---|---|---|
ADODB.Connection | データベースへの接続 | .Open , .Close , .Execute |
ADODB.Recordset | クエリ結果の保持、データの読み書き | .Open , .Close , .MoveNext , .AddNew , .Update , .Delete |
ADODB.Command | SQLコマンドの実行(パラメータ付きも可) | .Execute |
ADODB.Parameter | パラメータクエリ用の値 | —(Commandと一緒に使う) |
🧩 1. ADODB.Connection
の主なメソッド
.Open
接続を開始する。
conn.Open ConnectionString
.Close
接続を終了する。
conn.Close
.Execute
SQL文を実行し、結果(必要に応じてレコードセット)を返す。
Set rs = conn.Execute("SELECT * FROM Users")
📄 2. ADODB.Recordset
の主なメソッド
.Open
クエリの実行とレコードセットの取得。
rs.Open "SELECT * FROM TableName", conn, adOpenStatic, adLockReadOnly
.Close
レコードセットを閉じる。
rs.Close
.MoveNext
, .MovePrevious
, .MoveFirst
, .MoveLast
レコード間の移動。
rs.MoveNext If rs.EOF Then MsgBox "最後のレコードです"
.AddNew
, .Update
レコードの追加・保存。
rs.AddNew rs.Fields("Name").Value = "田中" rs.Update
.Delete
現在のレコードを削除。
rs.Delete rs.MoveNext ' 削除後の移動が必要
🧪 3. ADODB.Command
の主なメソッド
.Execute
パラメータ付きSQLの実行などに使われる。
Dim cmd As ADODB.Command Set cmd = New ADODB.Command With cmd .ActiveConnection = conn .CommandText = "SELECT * FROM Users WHERE ID = ?" .CommandType = adCmdText .Parameters.Append .CreateParameter("ID", adInteger, adParamInput, , 1001) End With Set rs = cmd.Execute
🛠 よく使う定数(adOpenStatic
など)
定数 | 説明 |
---|---|
adOpenStatic | 取得時の状態を保持。スクロール可能 |
adLockReadOnly | 読み取り専用ロック |
adCmdText | SQLテキストとして解釈することを明示 |
※定数を使うには参照設定で「Microsoft ActiveX Data Objects x.x Library」にチェック。
✅ よくある使い方の流れ
Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open "接続文字列" rs.Open "SELECT * FROM Table", conn, adOpenStatic, adLockReadOnly Do Until rs.EOF Debug.Print rs.Fields("Name").Value rs.MoveNext Loop rs.Close conn.Close Set rs = Nothing Set conn = Nothing