2013-09-14 2 views
0

Я использую следующий макрос для извлечения данных из закрытой книги. Почему Debug.Print возвращает данные в imediate окна, но данные не копируются на лист ни с утверждением, ActiveSheet.Cells(1, 1).CopyFromRecordset objrecordset![Name] & " " & objrecordset![Number], ни с утверждением, ActiveSheet.Cells(1,1).CopyFromRecordset objrecordsetизвлекать данные excel из закрытой книги с ado

sub adoExcel() 

Set objConnection = CreateObject("ADODB.Connection") 
Set objrecordset = CreateObject("ADODB.Recordset") 

'************************************************************************************* 
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
"Data Source=C:\Users\sp\Desktop\test ado excel\test.xls;" & _ 
"Extended Properties=""Excel 8.0;HDR=Yes;"";" 
'************************************************************************************* 

objrecordset.Open "Select * FROM [Sheet1$]", _ 
objConnection, adOpenStatic, adLockOptimistic, adCmdText 

'************************************************************************************* 
' Loop through the recordset and send data to the Immediate Window 

objrecordset.MoveFirst 

Do 
    Debug.Print objrecordset![Name] & " " & objrecordset![Number] 
    objrecordset.MoveNext 
Loop Until objrecordset.EOF 

'************************************************************************************** 
ActiveSheet.Cells(1, 1).CopyFromRecordset objrecordset![Name] & " " & objrecordset!   [Number] 
'************************************************************************************** 

ответ

1

При попытке CopyFromRecordset вы уже в конце файла (EOF), чтобы не было данных для копирования. Переместите оператор CopyFromRecordset ранее в своем коде, прежде чем прокручивать его.

И аргумент для этого метода является RecordSet объект:

.CopyFromRecordset objrecordset 
Смежные вопросы