参照設定する方がよい。
- Microsoft ActiveX Data Objects Recordset 6.0 Library
 - Microsoft ActiveX Data Objects 6.1 Library
 
Option Explicit
Public Sub adotest()
    Const adOpenKeyset = 1
    Const adLockReadOnly = 1
    Dim cn As Object
    Dim aRs As Object
    Dim query As String
    
    Set cn = CreateObject("ADODB.Connection")
    cn.Provider = "Microsoft.ACE.OLEDB.12.0"
    cn.Properties("Extended Properties") = "Excel 12.0;HDR=YES;IMEX=1"
    'レコードセット作成
    Set aRs = CreateObject("ADODB.Recordset")
    ' コネクションオープン、接続先は自分自身
    cn.Open ThisWorkbook.FullName
    query = " SELECT ID, NAME, VALUE " _
        & " FROM [Sheet1$] " _
        & " ORDER BY ID"
        
    aRs.Open query, cn, adOpenKeyset, adLockReadOnly
        
    If Not aRs Is Nothing Then
        If aRs.RecordCount > 0 Then
            Do Until aRs.EOF
                MsgBox (aRs("ID") & " :" & aRs("NAME") & " :" & aRs("VALUE"))
                aRs.MoveNext
            Loop
        End If
    End If
End Sub
ADOの参照を設定して、コネクションを設定し、レコードセットを作成。
コネクション
Microsoft.ACE.OLEDB.12.0  -->  Office2007以降
Office2003  -->  Microsoft.ACE.OLEDB.4.0
拡張プロパティ
cn.Properties("Extended Properties") = "Excel 12.0  -->  Office2007以降
Office2003  -->  cn.Properties("Extended Properties") = "Excel 8.0
    HDR=Yes --> 1行目ヘッダー HDR=No  -->  ヘッダーなし
    IMEX=1  -->  書き込み、 2  -->  読み込み、 3  -->  書き込みと読み込み
エクセル対象にする場合は、接続先は自分自身
 ThisWorkbook.FullName
       From句はシート名 + $
参照設定をした方が速度も速いらしいが、なによりも入力支援機能が使えるなど開発しやすい。
でも、参照設定をすると、後日違うPCから実行したらエラーを吐くかもしれない。
上の例では、Objectで宣言して、CreateObjectにより、実行時バインディングしているので大丈夫。
参照設定を利用する事前バインディングでは、
 Dim cn As ADODB.Connection    'ADOコネクションオブジェクト
 Dim aRs As ADODB.Recordset    'ADOレコードセットオブジェクト
 Set cn = New ADODB.Connection      'ADOコネクションのインスタンス作成
 Set aRs = New ADODB.Recordset       'ADOレコードセットのインスタンス作成
他のBookにデータがある場合はConnectionStringにData Sourceを登録する。
Option Explicit
Public Sub test()
    Const adOpenKeyset = 1
    Const adLockReadOnly = 1
    Dim cn As Object
    Dim aRs As Object
    Dim query As String
    Dim dataFile As String               '抽出対象のデータが登録されたExcelファイル
    
     '抽出対象のデータが登録されたExcelファイル
    dataFile = ActiveWorkbook.Path & "\testADO_Data.xlsx"
    
    Set cn = CreateObject("ADODB.Connection")
    cn.Provider = "Microsoft.ACE.OLEDB.12.0"
    cn.Properties("Extended Properties") = "Excel 12.0;HDR=YES;IMEX=1"
    'レコードセット作成
    Set aRs = CreateObject("ADODB.Recordset")
    
    ' コネクションオープン、接続先は他のBook
    With cn
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .Properties("Extended Properties") = "Excel 12.0;HDR=YES;IMEX=1"
        .ConnectionString = "Data Source = " & dataFile & _
        ";Extended Properties =Excel 12.0;"
        .Open
    End With
    query = " SELECT ID, NAME, VALUE " _
        & " FROM [Sheet1$] " _
        & " ORDER BY ID"
        
    aRs.Open query, cn, adOpenKeyset, adLockReadOnly
        
    If Not aRs Is Nothing Then
        If aRs.RecordCount > 0 Then
            Do Until aRs.EOF
                MsgBox (aRs("ID") & " :" & aRs("NAME") & " :" & aRs("VALUE"))
                aRs.MoveNext
            Loop
        End If
    End If
End Sub