Pasar de access a excel

Tengo un problema al volcar los datos de Access a Excel
hago dos consultas a una base de datos, en una obtengo 6 campos de la base de datos y los vuelco a una hoja de excel mediante CopyFromRecordSet para que me copie todos los registros juntos, de un golpe.
            .Worksheets("Datos").SELECT
            Set rsInformeDatos = CurrentDb.OpenRecordset(sqlSubqueryDatos)
                .Sheets("Datos").Cells(2, 1). CopyFromRecordset rsInformeDatos
            RsInformeDatos. Close
La segunda consulta tiene 3 campos, un dato de la tabla, una cuenta del número de campos implicados y una suma del valor de otro campo. Al intentar volcar los datos de esta consulta al excel NO me da error, pero no me escribe nada en las celdas correspondientes, la consulta esta bien hecha, lo he comprobado volcando los datos de uno en uno, el problema es que tarda demasiado.
Dim i As Integer
       i = 2
       While Not (rsInformeDatos.EOF)
             .ActiveWorkbook.Sheets("Datos").Cells(i, 1) = rsInformeCartera. Fields(0). Value 
            .ActiveWorkbook.Sheets("Datos").Cells(i, 2) = rsInformeCartera. Fields(1). Value 
            .ActiveWorkbook.Sheets("Datos").Cells(i, 3) = rsInformeCartera. Fields(2). Value 
            i = i + 1
            RsInformeCartera. MoveNext
        Wend
RsInformeDatos. Close
¿Se le ocurre alguna solución? ¿Dónde podría estar el problema?
También he probado con la función
RsInformeDatos. GetRows
Y volcandolo en una variable miTabla. Cuando estoy traceando y voy a ver que tiene solo me muestra el valor de una fila. Para poder obtener los datos lo que he hecho es meterlo dentro del bucle, pero tarda lo mismo que obteniéndolo directamente del recorset.
La variable mi tabla no me deja definirla como una matriz ya que me dice que el contenido de rsInformeDatos. GetRows NO LO PUEDE VOLCAR EN UNA MATRIZ.

2 Respuestas

Respuesta
1
El error esta en que la condición del mientras estas haciendo referencia al recordset "informeDatos.EOF" y debeeria ser al recordset "informeCartera.EOF", es por eso que la condición siempre se cumple y se queda en un ciclo infinito.
Respuesta
1
No entiendo muy bien porque quieres hacer el volcado de la consulta a través de código.
Dentro del propio access, como supongo que sabrás hay una opción para exportar, tablas, consultas o lo que quieras a excel. Te lo exporta perfectamente y es muy rápido y sencillo, sin necesidad de meter ningún código.
El problema es que cuando exportamos utilizamos un excel ya creado a modo de plantilla, con funciones definidas en algunas celdas y macros para el documento, por lo que no necesito crear un excel nuevo, sino simplemente volcar unas columnas de datos en una pestaña para que a partir de esa información se monte todo el excel.
Pues más fácil aún. El excel tiene una función que es importar datos de un access. Ahí tomas tu consulta como dato de importación y cada vez que actualices el access, las modificaciones aparecen reflejadas en el excel

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas