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
Ir a la versión completa