将数据从Excel电子表格检索到块中的Excel电子表格

时间:2013-04-30 12:42:22

标签: excel-vba oledb adodb vba excel

这是我的问题: 我想从另一个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)。

问候。

(甚至不要犹豫纠正我糟糕的语法)

1 个答案:

答案 0 :(得分:2)

我认为这就是你所需要的:

Cells(1,1).CopyFromRecordset rs

很简单,你不觉得。但是把它换成这一行:

Range(Cells(1,1)................ = rs

请记住删除评论:'Problem here:)

顺便说一句,您在工作表中获得的数据不包括列标题。但我希望你能单独应对。