2013-04-30 77 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

相關問題