Programación General > Visual Basic 6.0 e inferiores

 Pasar de .mdb a .xls

(1/1)

alejos:
Hola a todos,

Estoy creando una aplicación en la que tengo que pasar los registros de una base de datos .mdb a un archivo de Excel .xls. En mi código ya consigo crear el archivo excel e introducir algunos registros en el archivo, pero tengo dos problemas.

El primero es que tras haber creado y guardado el archivo, me aparece correctamente en el directorio que ha elegido el usuario, pero al abrirlo con el excel siempre se me abre el fichero creado más otro llamado Libro1.xls que ni siquiera aparece en el directorio.

El segundo problema es que no consigo que se guarden todos los registros de la base de datos en el archivo excel. Para ello creo un bucle hasta encotrar el EOF del recordset. Dentro de este bucle (el principal) voy rellenando el fichero de excel por filas y columnas. Si en segundo bucle de las filas introduzco un valor máximo entero (5 o 6) funciona pero sólo me guarda los 5 o 6 "últimos" registros de la  base de datos. Además si pongo un numero mayor de 6 se me vuelve a colgar (la base de datos que tengo para pruebas contiene 30 registros). Debería recorrer el recordset hasta el total de registros (rs.RecordCount) que contiene, pero se me cuelga el programa.

Aquí os presento mi código: (fijaos que en la línea 34 el bucle for es hasta el valor 6 pero debería ir puesto rs.RecordCount)


--- Código: Visual Basic ---      Dim i As Long    Dim j As Long        Dim xlApp As Excel.Application    Dim xlBook As Excel.Workbook    Dim xlSheet As Excel.Worksheet     dbname = App.Path    If Right$(dbname, 1) <> "" Then dbname = dbname & ""    dbname = dbname & "DatosVueloDB.mdb"    Set db = OpenDatabase(dbname)     ' Obtener los records o valores.    Set qdef = db.CreateQueryDef("", "SELECT * FROM Tabla")    Set rs = qdef.OpenRecordset(dbOpenSnapshot)         Dialogo.DialogTitle = "Destino - Seleccione el archivo de destino"    Dialogo.Filter = "Archivos de Datos (*.csv)|*.csv |Archivo de Excel (*.xlsx)|*.xlsx"    Dialogo.ShowOpen     Dialogo.FileName <> "" And Dialogo.FilterIndex = 2 Then             Set xlApp = New Excel.Application        Set xlBook = xlApp.Workbooks.Add        Set xlSheet = xlBook.Worksheets.Add         For i = 1 To rs.Fields.Count               xlSheet.Cells(1, i).Value = rs.Fields(i - 1).Name    'Relleno la primera fila del fichero excel con el nombre de los campos        Next i                Do While Not rs.EOF            For j = 2 To 6    'rs.RecordCount                    ' empiezo a rellenar desde la segunda fila hasta el total de registros de la base de datos                 For i = 1 To rs.Fields.Count                      ' empiezo a llenar las columnas hasta el total de campos de la base de datos                      xlSheet.Cells(j, i).Value = rs.Fields(i-1).Value                 Next i                                rs.MoveNext        'Siguiente registro             Next j        Loop         xlSheet.SaveAs Dialogo.FileName          'guardo el fichero excel con el nombre del usuario                xlApp.Quit                               'cierro todo, fichero y conexion de la base de datos        Set xlApp = Nothing        'Set xlBook = Nothing        Set xlSheet = Nothing        rs.Close        db.Close  
Espero que podáis ayudarme. He mirado por todos los lados pero para pasar de .mdb a .xls hay poca información. Sólo encuentro información para hacer el paso contrario. Pero esto no me sirve.

Espero que me podáis ayudar. Muchas gracias por adelantado.

Saludos
Alejos

Navegación

[0] Índice de Mensajes

Ir a la versión completa