用ADO將另一個Excel檔當作一個資料庫,以SQL語法來取得資料。
(Excel 2010 64位元已不支援Jet引擎,改用Ace引擎)
(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