2013-04-30 80 views
0

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

连接工作,我做了我想要的,通过循环我的记录集。但是现在我想要进行一些优化,即将我的记录集放入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 

这里的事情,是我目前正在处理,我不知道很多关于他们并不能找到他们的任何文档技术(例如用于OLEDB的Microsoft ACE 12.0提供程序)。

问候。

(甚至不毫不犹豫地纠正我的语法很差)

回答

2

我觉得这是你所需要的:

Cells(1,1).CopyFromRecordset rs 

相当简单,你不觉得。但把它而不是此行的:

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

而且记得删除评论:'Problem here :)

顺便说一句,你的数据在你的片获得不包括标题栏。但我希望你能分开处理。

+0

非常感谢!这很好用! 只是想知道:你是怎么想出来的? 如果我可以自己解决我的问题,对每个人来说都会更好; – 2013-04-30 14:52:14

+2

若干年的经验:)对于您可以检查[此链接]的某些其他信息(http://msdn.microsoft.com/zh-cn/库/ ff839240%28V = office.14%29.aspx)... – 2013-04-30 14:55:15