Exportar Recordset MS Access a MS Excel

23 enero, 2008 por Mr. FotoPex Dejar una respuesta »

 

 

Para hacer la exportación de los datos de una tabla por medio de un Recordset primero abrimos visual basic y creamos un nuevo proyecto, necesitamos agregar las referencias Microsoft Excel 9.0 Object Library y Microsoft Activex Data objects 2.0 Library.

Ahora agregamos un boton de comando y declaramos las variables que utilizaremos.

Visual Basic:
  1. 'Recuerda que debes añadir las referencias
  2. 'Microsoft Excel 9.0 Object Library
  3. 'Microsoft Activez Data objects 2.0 Library
  4.  
  5. Option Explicit
  6.  
  7. Dim H As Integer
  8. Dim V As Integer
  9.  
  10. Public objExcel As Excel.Application
  11. Dim Rs As Recordset
  12. Dim db As Connection

La función para conectar a la base de datos.

Visual Basic:
  1. Sub conectaDB()
  2.   Set db = New Connection
  3.   db.CursorLocation = adUseClient
  4.   db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;"
  5.  
  6.   Set Rs = New Recordset
  7.   Rs.Open "select apellidos,direccion,dni,nombre,pais,poblacion,provincia,telefono from clientes", db, adOpenStatic, adLockOptimistic
  8. End Sub

El evento al botón.

Visual Basic:
  1. Private Sub Command1_Click()
  2.      
  3.      Call conectaDB
  4.    
  5.     'guardamos en un array los nombres del encabezado de cada columna
  6.     Dim Heading(8) As String
  7.     Heading(0) = "Nombre"
  8.     Heading(1) = "Apellidos"
  9.     Heading(2) = "Direccion"
  10.     Heading(3) = "Poblacion"
  11.     Heading(4) = "Provincia"
  12.     Heading(5) = "Pais"
  13.     Heading(6) = "Telefono"
  14.     Heading(7) = "DNI"
  15.            
  16.    
  17.     Call Inicio_Excel 'Llamamos a la funcion que abre el workbook en excel
  18.     Call Formato_Excel(8, Heading()) 'llamamos a la funcion que da el formato al encabezado
  19.    
  20. V = 5 ' fila donde comenzara a insertar los datos
  21. H = 1 ' columna donde comenzara a insertar los datos
  22.  
  23.      Do While Not Rs.EOF 'esto nos sirve pa leer los datos desde
  24.         'la tabla de access para despues colocarlos en las celdas correspondientes
  25.        With Rs
  26.             objExcel.ActiveSheet.Cells(V, H) = .Fields!nombre
  27.             objExcel.ActiveSheet.Cells(V, H + 1) = .Fields!apellidos
  28.             objExcel.ActiveSheet.Cells(V, H + 2) = .Fields!direccion
  29.             objExcel.ActiveSheet.Cells(V, H + 3) = .Fields!poblacion
  30.             objExcel.ActiveSheet.Cells(V, H + 4) = .Fields!provincia
  31.             objExcel.ActiveSheet.Cells(V, H + 5) = .Fields!pais
  32.             objExcel.ActiveSheet.Cells(V, H + 6) = .Fields!telefono
  33.             objExcel.ActiveSheet.Cells(V, H + 7) = .Fields!dni
  34.             V = V + 1
  35.             .MoveNext
  36.         End With
  37.     Loop
  38.  Set objExcel = Nothing 'una vez hemos terminado descargamos el objeto
  39.  
  40. End Sub

La función para iniciar MS Excel.

Visual Basic:
  1. Public Function Inicio_Excel() As Boolean
  2.  
  3. Set objExcel = New Excel.Application
  4. objExcel.Visible = True 'lo hacemos visible
  5. objExcel.SheetsInNewWorkbook = 1 'decimos cuantas hojas queremos en el nuevo documento
  6. objExcel.Workbooks.Add ' añadimos el objeto al workbook
  7.  
  8. End Function

La función para los encabezados en MS Excel.

Visual Basic:
  1. Public Function Formato_Excel(Num_Campos As Integer, Nombre_Campos() As String) As Boolean
  2.  
  3. Dim I As Integer
  4.  
  5. With objExcel.ActiveSheet
  6.        
  7.     'Formato de las celdas de los encabezados
  8.     .Range(.Cells(3, 1), .Cells(3, Num_Campos)).Borders.LineStyle = xlContinuous
  9.     .Range(.Cells(3, 1), .Cells(3, 8)).Font.Bold = True
  10.    
  11.     'Ingresamos el texto a las celdas
  12.     For I = 1 To Num_Campos - 1 Step 1
  13.         .Cells(3, I) = Nombre_Campos(I)
  14.     Next I
  15.     ' asignamos el ancho de las celdas
  16.     .Columns("A").ColumnWidth = 25
  17.     .Columns("B").ColumnWidth = 35
  18.     .Columns("C").ColumnWidth = 30
  19.     .Columns("D").ColumnWidth = 20
  20.     .Columns("E").ColumnWidth = 15
  21.     .Columns("F").ColumnWidth = 15
  22.     .Columns("G").ColumnWidth = 10
  23.     .Columns("H").ColumnWidth = 10
  24. End With
  25. End Function

Espero que te sirva este ejemplo y aqui puedes descargarte los archivos del código.

floppy.jpg
Clic para descargar el archivo
Publicidad

2 comentarios

  1. MARIA LUISA dice:

    MUCHISIMAS GRACIAS POR ESTE TRABAJO TAN BONITO, POR SER DE GRAN AYUDA

  2. Vermelles dice:

    Gracias por una explicación tan simple y de tanta ayuda

Deja un comentario