0

这是我的问题:我想从另一个 Excel 电子表格中的 Excel XML 电子表格 (*.xlsx) 中检索数据而不打开它。所以我给了 OLEDB 与 ACE Provider 的机会。

通过循环访问我的记录集,连接有效,我得到了我想要的。但是现在我想要一些优化,即将我的记录集放在一个块中的excel中,而不是循环遍历它。

因此我做了这样的事情:

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

这里的问题是,我目前正在处理我对它们不太了解并且找不到任何文档的技术(例如 Microsoft ACE 12.0 Provider for OLEDB)。

问候。

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

4

1 回答 1

2

我认为这是你需要的:

Cells(1,1).CopyFromRecordset rs

很简单,你不觉得。但把它代替这一行:

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

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

顺便说一句,您在工作表中获得的数据不包括列标题。但我希望你能分开处理。

于 2013-04-30T14:47:25.767 回答