hiko-blog

VBA業務改善

MENU

Excelからアクセスデータ抽出時、パラメータをエクセルセル値から読み取りさせる

Option Explicit

Sub ExcelからAccessデータ抽出パラメータ条件付き()
'Microsoft ActiveX Data Objects 2.X LibraryとMIcrosoft ADO Ext.x.x for DDL and SecurityをVBEツールから参照設定


    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim cmd As ADODB.Command
    
    Dim dbPath As String
    dbPath = "D:\ThinkpadMark3\自学\filename変更_bat類\.xlsm\Accessへのexport\Database2.accdb"
    
    ' コネクションをセットし、Accessを開く
    Set cnn = New ADODB.Connection
    cnn.Provider = "Microsoft.Ace.OLEDB.12.0;"
    ' 任意のAccessファイルを設定する
    'cnn.Open ThisWorkbook.Path & "\ado3.accdb"
     cnn.Open dbPath


    ' コマンドをセット
    Set cmd = New ADODB.Command
    Set cmd.ActiveConnection = cnn
    
    cmd.CommandText = "クエリ1"  ' クエリを設定
    
    Dim I, J As String
    I = ActiveSheet.Cells(1, 5)
    J = ActiveSheet.Cells(1, 6)
     
    'レコードセットをセットし、パラメータを指定して実行
    Set rst = New ADODB.Recordset
    'Set rst = cmd.Execute(Parameters:=Array("%1%", "%3%"))
    Set rst = cmd.Execute(Parameters:=Array("%" & I & "%", "%" & J & "%"))
    
    If rst.EOF Then
        MsgBox "データがありません。"
    Else
        'レコードをA1セルへ貼り付ける
        Range("A1").CopyFromRecordset rst
    End If
    
    ' 閉じる
    rst.Close
    cnn.Close
    
    ' 解放する
    Set cmd = Nothing
    Set rst = Nothing
    Set cnn = Nothing
End Sub