Excel VBAのADO(ActiveX Data Objects)ライブラリは、データベースにアクセスし、データを操作するための強力なツールです。ADOを使用することで、Excelから直接データベースに接続し、SQLクエリを実行してデータの取得や更新を行うことができます。以下に、ADOライブラリの主要な機能とそれらを活用した実用例を説明します。
主な機能
Connectionオブジェクト
データベースへの接続を管理します。接続の確立、クローズ、および接続情報の設定を行います。
Recordsetオブジェクト
データベースから取得したレコードの集合を表します。データの取得、操作、移動を行います。
Commandオブジェクト
SQLクエリやストアドプロシージャを実行します。
例題1: データベースへの接続とデータの取得
ADOライブラリの参照設定
VBAエディタを開く:Excelで Alt + F11 を押してVBAエディタを開きます。
参照設定を開く:VBAエディタで ツール メニューをクリックし、 参照設定 を選択します。
ADOライブラリを選択:リストから「Microsoft ActiveX Data Objects x.x Library」にチェックを入れます。リストに表示されていない場合は、下にスクロールして探してください。x.x はバージョン番号です。
以下の例では、ADOを使用してデータベースに接続し、データを取得してExcelシートに表示する方法を示します。
Sub FetchDataFromDatabase()
    ' ADOライブラリの参照設定が必要
    ' 参照設定: Microsoft ActiveX Data Objects x.x Library
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim connString As String
    Dim sql As String
    ' 接続文字列の設定
    connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\your\database.accdb;"
    ' SQLクエリの設定
    sql = "SELECT * FROM YourTableName"
    ' Connectionオブジェクトの作成と接続の確立
    Set conn = New ADODB.Connection
    conn.Open connString
    ' Recordsetオブジェクトの作成とSQLクエリの実行
    Set rs = New ADODB.Recordset
    rs.Open sql, conn
    ' データの取得とExcelシートへの表示
    Dim i As Integer
    Dim j As Integer
    i = 1
    While Not rs.EOF
        For j = 0 To rs.Fields.Count - 1
            Cells(i, j + 1).Value = rs.Fields(j).Value
        Next j
        i = i + 1
        rs.MoveNext
    Wend
    ' リソースの解放
    rs.Close
    conn.Close
    Set rs = Nothing
    Set conn = Nothing
    MsgBox "データの取得が完了しました。", vbInformation, "完了"
End Subこのコードでは、Connectionオブジェクトを使用してデータベースに接続し、Recordsetオブジェクトを使用してSQLクエリを実行してデータを取得し、そのデータをExcelシートに表示しています。
例題2: データの挿入
次に、ADOを使用してデータベースにデータを挿入する方法を示します。
Sub InsertDataToDatabase()
    ' ADOライブラリの参照設定が必要
    ' 参照設定: Microsoft ActiveX Data Objects x.x Library
    Dim conn As ADODB.Connection
    Dim sql As String
    ' 接続文字列の設定
    connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\your\database.accdb;"
    ' SQLクエリの設定
    sql = "INSERT INTO YourTableName (FieldName1, FieldName2) VALUES ('Value1', 'Value2')"
    ' Connectionオブジェクトの作成と接続の確立
    Set conn = New ADODB.Connection
    conn.Open connString
    ' SQLクエリの実行
    conn.Execute sql
    ' 接続のクローズ
    conn.Close
    Set conn = Nothing
    MsgBox "データの挿入が完了しました。", vbInformation, "完了"
End Subこのコードでは、Connectionオブジェクトを使用してデータベースに接続し、SQLのINSERTクエリを実行してデータを挿入しています。
例題3: データの更新
以下の例では、ADOを使用してデータベース内のデータを更新する方法を示します。
Sub UpdateDataInDatabase()
    ' ADOライブラリの参照設定が必要
    ' 参照設定: Microsoft ActiveX Data Objects x.x Library
    Dim conn As ADODB.Connection
    Dim sql As String
    ' 接続文字列の設定
    connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\your\database.accdb;"
    ' SQLクエリの設定
    sql = "UPDATE YourTableName SET FieldName1 = 'NewValue' WHERE FieldName2 = 'Value2'"
    ' Connectionオブジェクトの作成と接続の確立
    Set conn = New ADODB.Connection
    conn.Open connString
    ' SQLクエリの実行
    conn.Execute sql
    ' 接続のクローズ
    conn.Close
    Set conn = Nothing
    MsgBox "データの更新が完了しました。", vbInformation, "完了"
End Subこのコードでは、Connectionオブジェクトを使用してデータベースに接続し、SQLのUPDATEクエリを実行してデータを更新しています。
例題4: データの削除
次に、ADOを使用してデータベース内のデータを削除する方法を示します。
Sub DeleteDataFromDatabase()
    ' ADOライブラリの参照設定が必要
    ' 参照設定: Microsoft ActiveX Data Objects x.x Library
    Dim conn As ADODB.Connection
    Dim sql As String
    ' 接続文字列の設定
    connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\your\database.accdb;"
    ' SQLクエリの設定
    sql = "DELETE FROM YourTableName WHERE FieldName2 = 'Value2'"
    ' Connectionオブジェクトの作成と接続の確立
    Set conn = New ADODB.Connection
    conn.Open connString
    ' SQLクエリの実行
    conn.Execute sql
    ' 接続のクローズ
    conn.Close
    Set conn = Nothing
    MsgBox "データの削除が完了しました。", vbInformation, "完了"
End Subこのコードでは、Connectionオブジェクトを使用してデータベースに接続し、SQLのDELETEクエリを実行してデータを削除しています。
結論
Excel VBAのADO(ActiveX Data Objects)ライブラリを使用することで、Excelから直接データベースにアクセスし、データの取得、挿入、更新、削除を行うことが可能です。ConnectionオブジェクトとRecordsetオブジェクトを適切に使用することで、効率的なデータ操作が実現できます。このライブラリを駆使することで、データベース管理や業務効率化のプロセスが大幅に改善されます。

