这是我的问题: 我想从另一个Excel电子表格中的Excel XML电子表格(* .xlsx)中检索数据而不打开它。所以我给ACEB提供了一个ACEB的机会。
通过循环我的记录集,连接工作,我做了我想要的。但现在我想要一些优化,即将我的记录集放入块中而不是循环遍历它。
因此我做了这样的事情:
Sub RetrieveData()
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection
Set rs = New ADODB.Recordset
With con
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=Path\File.xlsx; _
Extended Properties=""Excel 12.0 Xml;HDR=NO;IMEX=1"""
.Open
Set rs = .Execute("Select * From [Sheet1$]")
'Problem here
Range(Cells(1, 1), Cells(rs.RecordCount, rs.Fields.Count - 1)) = rs
.Close
End With
Exit Sub
这里的问题是,我目前正在处理我不太了解它们的技术,并且找不到任何关于它们的文档(例如,用于OLEDB的Microsoft ACE 12.0 Provider)。
问候。
(甚至不要犹豫纠正我糟糕的语法)
答案 0 :(得分:2)
我认为这就是你所需要的:
Cells(1,1).CopyFromRecordset rs
很简单,你不觉得。但是把它换成这一行:
Range(Cells(1,1)................ = rs
请记住删除评论:'Problem here
:)
顺便说一句,您在工作表中获得的数据不包括列标题。但我希望你能单独应对。