A:可以利用RecordSet的GetRows方法獲取數組。
- Sub SQL2Arr()
- Dim AdoCN As Object
- Dim AdoRe As Object
- Dim SQL As String
- Dim Arr1, Arr2, Arr3
- Set AdoCN = CreateObject("ADODB.Connection")
- Set AdoRe = CreateObject("ADODB.Recordset")
- SQL = "SELECT * FROM [Sheet1$A1:C11]"
- AdoCN.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
- "Data Source=" & ThisWorkbook.FullName & ";" & _
- "Extended Properties=Excel 12.0;"
- Set AdoRe = AdoCN.Execute(SQL)
- Arr1 = AdoRe.GetRows(, , "姓名") '取得某一列
- AdoRe.MoveFirst '取完一次,要將指針移動到最前
- Arr2 = AdoRe.GetRows(, , Array("姓名", "班級")) '取得兩列
- AdoRe.MoveFirst '取完一次,要將指針移動到最前
- Arr3 = AdoRe.GetRows '取得全部
- AdoCN.Close
- Set AdoRe = Nothing
- Set AdoCN = Nothing
- End Sub
利用這個方法,也可以單獨獲取某一字段。
附件下載:在VBA中如何將SQL得到的數據直接賦值到數組? http://www.exceltip.net/thread-13032-1-1-11314.html