2010-10-17 17 views
5

Espero que me pueda ayudar, me gustaría leer datos del archivo excel, y la forma en que estaba haciendo la instancia de aplicación de Excel en el backgroud, pero que yo me preguntaron sobre Macros de VBA: deshabilítelo o habilítelo.VBA ADODB excel - lea datos del conjunto de registros

Tengo 100 archivos de Excel de los que necesito recopilar datos, por lo que si me pidieran cada archivo, terminaría con un enfoque realmente no eficaz. Aunque soy novato en el mundo de Excel VBA y empiezo a dudar si hay alguna otra forma .....

Mi pregunta es ¿puedo abrirlos de otra manera?

Encuentro sth ADODB, siento que esto podría ayudarme. Así que tengo el código como a continuación. Como primera cosa, me gustaría leer datos de algunas celdas. No tengo idea de cómo puedo leer los datos. Intento leer como puedes ver a continuación pero arroja errores. La conexión de Opennig va bien, la ejecución de consultas también. Pero entonces solo supongo, cómo leer los datos.

Uso el editor 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 

estoy trabajando en Office 2003. Sin embargo, más me entero de que versión de Excell debe ser 11. Esto no funciona

Respuesta

13

me sorprende que la cadena de conexión que funciona para usted, porque le falta un punto y coma. El conjunto solo se usa con objetos, por lo que no diría 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 

hay otras maneras, dependiendo de lo que quiere hacer, como GetString (http://www.w3schools.com/ado/met_rs_getstring.asp).