hiko-blog

VBA業務改善

MENU

ExcelからAccessデータ取り込み(簡易版)

Option Explicit

Sub GetDataFromAccessWithMultipleConditions()
    Dim conn As Object
    Dim rs As Object
    Dim ws As Worksheet
    Dim strSQL As String
    
    ' Accessデータベースへの接続
    Set conn = CreateObject("ADODB.Connection")
    conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Path\To\Your\Database.accdb;"
    conn.Open
    
    ' データの取得
    Set rs = CreateObject("ADODB.Recordset")
    
    ' シート2のセルB1とB2にある条件を取得
    Dim condition1 As String
    Dim condition2 As String
    condition1 = ThisWorkbook.Sheets("Sheet2").Range("B1").Value
    condition2 = ThisWorkbook.Sheets("Sheet2").Range("C1").Value
    ' シート2のセルB1にある条件を取得
    Dim condition3 As String
    condition3 = ThisWorkbook.Sheets("Sheet2").Range("D1").Value
    
    
    ' 動的なSQLクエリを構築
    strSQL = "SELECT * FROM YourTable WHERE YourColumn1 = '" & condition1 & "' AND YourColumn2 = '" & condition2 & "' AND YourColumn3 LIKE '%" & condition3 & "%';"
    ' 動的なSQLクエリを構築(あいまい検索)
    'strSQL = "SELECT * FROM YourTable WHERE YourColumn LIKE '%" & Condition3 & "%';"
    
    
    
    rs.Open strSQL, conn
    
    ' データのエクセルへの反映
    Set ws = ThisWorkbook.Sheets("Sheet3")
    ws.Cells.Clear  ' データをクリア
    ws.Range("A1").CopyFromRecordset rs
    
    ' 接続のクローズ
    rs.Close
    conn.Close
    Set rs = Nothing
    Set conn = Nothing
End Sub