S.O.S(Volcar Recordset a Excel, 4000filasX25col)
Publicado por Mel (1 intervención) el 29/05/2002 18:15:06
Hola, necesitaría que alguien me ayudase con un problema que me trae de cabeza.
Tengo una BD en Oracle a la que me conecto desde VBA de Excel. Abro un recordset, con la consulta que me interesa, y la única forma que encuentro para volcar esta burrada de datos es con bucles recorriendome todo el recordset, con lo que tardo 30 segundos aprox.
Las otras opciones son las típicas, pero ninguna me sirve, no me dejar volcar más de 157 registros, eso en mi equipo, en otro, solamente 25 registros. ¿Cómo puedo solucionar esto?
Os enseño el código de las diferentes formas que he intentado:
*** OPCION A:
ActiveSheet.Cells(4, 1).CopyFromRecordset Rs
/* Se para dando error en el registro 157, error 3219
*** OPCION B:
With ActiveSheet.QueryTables.Add(Connection:=Rs, Destination:=Range(\"A5\"))
.Refresh BackgroundQuery:=False
End With
/* Devuelve un error en el .Refresh cuando el recordset contine
/*mas de 157 registros, Error 1004
*** OPCIÓN C:
ActiveSheet.Range(\"A10\").CopyFromRecordset Rs
/* Igual que opcion A, error 3219
*** OPCION D:
Do Until Rs.EOF
i = i + 1
For j = 0 To 23
Cells(i, j + 1).Value = Rs.Fields(j)
Next j
Rs.MoveNext
Loop
/* esto me funciona bien, pero no me sirve porque tarda 30 seg. Y
/*es probable que pueda encontrarme con más de 4000 filas.
Os agradezco muchisimo vuestra ayuda.
Un cordial saludo.
Tengo una BD en Oracle a la que me conecto desde VBA de Excel. Abro un recordset, con la consulta que me interesa, y la única forma que encuentro para volcar esta burrada de datos es con bucles recorriendome todo el recordset, con lo que tardo 30 segundos aprox.
Las otras opciones son las típicas, pero ninguna me sirve, no me dejar volcar más de 157 registros, eso en mi equipo, en otro, solamente 25 registros. ¿Cómo puedo solucionar esto?
Os enseño el código de las diferentes formas que he intentado:
*** OPCION A:
ActiveSheet.Cells(4, 1).CopyFromRecordset Rs
/* Se para dando error en el registro 157, error 3219
*** OPCION B:
With ActiveSheet.QueryTables.Add(Connection:=Rs, Destination:=Range(\"A5\"))
.Refresh BackgroundQuery:=False
End With
/* Devuelve un error en el .Refresh cuando el recordset contine
/*mas de 157 registros, Error 1004
*** OPCIÓN C:
ActiveSheet.Range(\"A10\").CopyFromRecordset Rs
/* Igual que opcion A, error 3219
*** OPCION D:
Do Until Rs.EOF
i = i + 1
For j = 0 To 23
Cells(i, j + 1).Value = Rs.Fields(j)
Next j
Rs.MoveNext
Loop
/* esto me funciona bien, pero no me sirve porque tarda 30 seg. Y
/*es probable que pueda encontrarme con más de 4000 filas.
Os agradezco muchisimo vuestra ayuda.
Un cordial saludo.
Valora esta pregunta


0