將Excel當作資料庫(Database)來讀取資料的範例

用ADO將另一個Excel檔當作一個資料庫,以SQL語法來取得資料。
(Excel 2010 64位元已不支援Jet引擎,改用Ace引擎)
讀取資料的範例如下:
Sub test01()
'測試excel當成database

Dim I As Integer

'宣告ADO物件

Set objConnection = CreateObject("ADODB.Connection")

Set objRecordset = CreateObject("ADODB.Recordset")

'以ADO連線另一個Excel,並將它開啟為資料庫
'「Excel 8.0」並非指Excel的版本,而是ADO使用的版本,如無特殊需求則儘量不要更改它
'「HDR」表示是否含工作表的第一列為標題列,「Yes」表示工作表的第一列為標題,也就是表格的欄位名稱
'Excel 64位元的版本已不支援Jet引擎,可改為Provider=Microsoft.Ace.OLEDB.12.0

objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _

    "Data Source=C:\test.xls;" & _

        "Extended Properties=""Excel 8.0;HDR=Yes;"";"



'執行SQL並將結果傳回給Recordset

objRecordset.Open "Select 姓名,地址 " & _

                  "FROM [Sheet1$] where 姓名 like '陳%' " & _

                  , objConnectio  

I = 0



'開啟Recordset,並將資料代入儲存格

Do Until objRecordset.EOF

    I = I + 1

    Sheets("工作表1").Range("A" & I).Value = objRecordset.Fields.Item("姓名")

    Sheets("工作表1").Range("B" & I).Value = objRecordset.Fields.Item("地址")

   
    '將Recordset移到下一筆

    objRecordset.MoveNext

Loop



objRecordset.Close

objconnection.Close



End Sub