2010-10-17 5 views
5

Надеюсь, что вы можете мне помочь, я хотел бы прочитать данные из файла excel и способ Я делал, создавал экземпляр приложения Excel в backgroud, но чем мне am Макросы VBA - отключить или включить его.VBA ADODB excel - прочитать данные Recordset

У меня есть 100 файлов excel, которые мне нужны для сбора данных, поэтому, если мне будет предложено каждый файл, у меня будет действительно неэффективный подход. Хотя я новичок в мире Excel VBA и начинаю сомневаться в том, есть ли другой способ .....

Мой вопрос: могу ли я открыть их другим способом?

Я нахожу это ADODB, я чувствую, что это может мне помочь. Поэтому у меня есть код, как показано ниже. В первую очередь я хотел бы прочитать данные из нескольких ячеек. Я не знаю, как я могу прочитать данные. Я пытаюсь читать, как вы можете видеть ниже, но это порождает ошибку. Соединение Openig идет хорошо, выполнение запроса также. Но тогда я просто догадываюсь, как читать данные.

Я использую редактор VBA.

Sub hello_jet() 
Set cn = CreateObject("ADODB.Connection") 
With cn 
.Provider = "Microsoft.Jet.OLEDB.4.0" 
    .ConnectionString = "Data Source=D:\test.xls" & _ 
"Extended Properties=Excel 8.0;" 
.Open 
End With 
strQuery = "SELECT * FROM [Sheet1$E36:E38]" 
Set rs = cn.Execute(strQuery) 
Do While Not rs.EOF 
    Set strNaam = rs.Fields(0).Value 
Loop 
rs.Close 
End Sub 

Я работаю в Office 2003. Еще больше я нахожу, что версия Excell должно быть 11. Это не работает

ответ

13

Я удивлен, что строка соединения работает для вас, потому что это отсутствует точка с запятой. Набор используется только с объектами, поэтому вы не должны указывать Set strNaam.

Set cn = CreateObject("ADODB.Connection") 
With cn 
.Provider = "Microsoft.Jet.OLEDB.4.0" 
    .ConnectionString = "Data Source=D:\test.xls " & _ 
    ";Extended Properties=""Excel 8.0;HDR=Yes;""" 
.Open 
End With 
strQuery = "SELECT * FROM [Sheet1$E36:E38]" 
Set rs = cn.Execute(strQuery) 
Do While Not rs.EOF 
    For i = 0 To rs.Fields.Count - 1 
    Debug.Print rs.Fields(i).Name, rs.Fields(i).Value 
    strNaam = rs.Fields(0).Value 
    Next 
    rs.MoveNext 
Loop 
rs.Close 

Есть и другие способы, в зависимости от того, что вы хотите сделать, такие как GetString (http://www.w3schools.com/ado/met_rs_getstring.asp).

Смежные вопросы