【ACCESS VBA おすすめ】ACCESSでSQLを使うサンプルByADODB(CREATE TABLE等(データ定義言語(DDL))も SELECT(データ操作言語(DML))もADODBのExecuteでよい)

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office

前回作成したサンプルでADODBを利用したバージョンです。

こちらのほうが、Access特有のクエリ的概念も少なく、SQL実行用メソッドExecuteで統一できるためメンテナンス効率を考えると、個人的におすすめです。

想定環境・前提条件

  • Microsoft Access (各バージョン)
  • VBAエディタからMicrosoft ActiveX Data Objects (ADO) ライブラリが利用可能な状態

ACCESSでSQLを使うサンプル (ADODB)

Public Sub ACCESSでSQLを使うサンプルByADODB()
    Debug.Print Application.CurrentProject.FullName
    Debug.Print Application.CurrentProject.ProjectType
    Debug.Print Application.CurrentProject.Connection.Provider

    Dim Cn As ADODB.Connection
    Dim Rs As ADODB.Recordset
    Set Cn = CurrentProject.Connection '自分自身を設定
    
    On Error GoTo trans_Err
    
    ' データ定義言語(DDL)文関係は、Executeを使う
    Cn.BeginTrans
    Cn.Execute "CREATE TABLE テスト(番号 INT, 名前 CHAR(10),誕生日 DATE);"
    
    Cn.Execute "INSERT INTO テスト(番号,名前,誕生日) VALUES (1,'山田太郎',#2016/1/21#);"
    Cn.Execute "INSERT INTO テスト(番号,名前,誕生日) VALUES (2,'山田花子',#2016/2/21#);"
    Cn.Execute "INSERT INTO テスト(番号,名前,誕生日) VALUES (2,'山田チーズ',#2016/3/21#);"
    Cn.Execute "UPDATE テスト SET 名前= '山田太郎次郎' WHERE 番号 = 1;"
    Cn.Execute "DELETE FROM テスト WHERE 番号 = 2;"
 
    ' DAOと違いSQL データ操作言語(DML)文のSELECTでも Executeが使える
    Set Rs = Cn.Execute("SELECT * FROM テスト;")
    Do Until Rs.EOF
        Debug.Print Rs(0)
        Debug.Print Rs(1)
        Debug.Print Rs(2)
        Rs.MoveNext
    Loop
    Rs.Close
    ' Cn.Execute "DROP TABLE テスト;" 'おまけ
    
    ' Commit the transaction
    Cn.CommitTrans
    
trans_Exit:
    ' Clean up
    Set Cn = Nothing
    Exit Sub
    
trans_Err:
    ' Roll back the transaction
    Debug.Print Cn.Errors(0).Description
    ' Cn.Rollback
    Resume trans_Exit
End Sub

前回(DAO)と今回(ADO)のサンプルを作成するにあたりAccessサンプルコードをインターネット検索していましたが、テーブルアクセス方法にADOとDAOが混在しており、それぞれにくせがあってAccessのとっつきにくさを感じる要因になっています。

そうであっても、いろいろな事情でAccessを使わざるを得ない職場もあるわけで、自分なりのコーディングポリシーを持ってキモを押さえておかないと、有益なサンプルを見つけても活用できません。

とりあえず今の自分のコーディングポリシーとしてはADO+SQLがよさそうだと感じました。加えてDAOの理解も深めていこうと思います。

この記事の更新履歴

この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。

2026年9月12日

  • 変更blockquoteタグによるコード表示を修正し、通常の段落やコードブロックとして正しく読めるように体裁を整えました。
  • 追加ADODB.Recordset型を使用するための変数「Dim Rs As ADODB.Recordset」の宣言を追加しました。

文書情報

記事タイトル
【ACCESS VBA おすすめ】ACCESSでSQLを使うサンプルByADODB(CREATE TABLE等(データ定義言語(DDL))も SELECT(データ操作言語(DML))もADODBのExecuteでよい)
作成日
更新日
Source URL
https://papanda925.com/?p=644

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました