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
