hiko-blog

VBA業務改善

MENU

ExcelとAccess複合検索

Sub SearchAccessQueryWithMultipleParameters()
    Dim conn As Object
    Dim rs As Object
    Dim strSQL As String
    Dim strConnection As String
    Dim accessDBPath As String
    Dim searchValue1 As Variant
    Dim searchValue2 As Variant
    Dim searchValue3 As Variant
    
    ' Accessデータベースのファイルパスを指定
    accessDBPath = "C:\Path\To\Your\Database.accdb"
    
    ' A1セル、A2セル、A3セルから検索条件の値を取得
    searchValue1 = Sheets("Sheet1").Range("A1").Value
    searchValue2 = Sheets("Sheet1").Range("A2").Value
    searchValue3 = Sheets("Sheet1").Range("A3").Value
    
    ' SQLクエリを作成(複数の検索条件を含む)
    'strSQL = "SELECT * FROM YourQueryName WHERE YourField1 = '" & searchValue1 & "' AND YourField2 = '" & searchValue2 & "' AND YourField3 = '" & searchValue3 & "';"
    

    ' SQLクエリを作成(あいまい検索を含む)
    strSQL = "SELECT * FROM YourQueryName WHERE YourField1 LIKE '%" & searchValue1 & "%' AND YourField2 LIKE '%" & searchValue2 & "%' AND YourField3 LIKE '%" & searchValue3 & "%';"

 

 

 

    ' 接続文字列を作成
    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & accessDBPath & ";"
    
    ' ADOオブジェクトを作成
    Set conn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
    
    ' データベースに接続
    conn.Open strConnection
    
    ' クエリを実行
    rs.Open strSQL, conn
    
    ' 検索結果をExcelに貼り付け(例:シート1のA4セルから開始)
    Sheets("Sheet2").Range("A1").CopyFromRecordset rs
    
    ' 接続を閉じる
    rs.Close
    conn.Close
    
    ' オブジェクトの解放
    Set rs = Nothing
    Set conn = Nothing
End Sub