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.
-
'Recuerda que debes añadir las referencias
-
'Microsoft Excel 9.0 Object Library
-
'Microsoft Activez Data objects 2.0 Library
-
-
Option Explicit
-
-
Dim H As Integer
-
Dim V As Integer
-
-
Public objExcel As Excel.Application
-
Dim Rs As Recordset
-
Dim db As Connection
La función para conectar a la base de datos.
-
Sub conectaDB()
-
Set db = New Connection
-
db.CursorLocation = adUseClient
-
db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;"
-
-
Set Rs = New Recordset
-
Rs.Open "select apellidos,direccion,dni,nombre,pais,poblacion,provincia,telefono from clientes", db, adOpenStatic, adLockOptimistic
-
End Sub
El evento al botón.
-
Private Sub Command1_Click()
-
-
Call conectaDB
-
-
'guardamos en un array los nombres del encabezado de cada columna
-
Dim Heading(8) As String
-
Heading(0) = "Nombre"
-
Heading(1) = "Apellidos"
-
Heading(2) = "Direccion"
-
Heading(3) = "Poblacion"
-
Heading(4) = "Provincia"
-
Heading(5) = "Pais"
-
Heading(6) = "Telefono"
-
Heading(7) = "DNI"
-
-
-
Call Inicio_Excel 'Llamamos a la funcion que abre el workbook en excel
-
Call Formato_Excel(8, Heading()) 'llamamos a la funcion que da el formato al encabezado
-
-
V = 5 ' fila donde comenzara a insertar los datos
-
H = 1 ' columna donde comenzara a insertar los datos
-
-
Do While Not Rs.EOF 'esto nos sirve pa leer los datos desde
-
'la tabla de access para despues colocarlos en las celdas correspondientes
-
With Rs
-
objExcel.ActiveSheet.Cells(V, H) = .Fields!nombre
-
objExcel.ActiveSheet.Cells(V, H + 1) = .Fields!apellidos
-
objExcel.ActiveSheet.Cells(V, H + 2) = .Fields!direccion
-
objExcel.ActiveSheet.Cells(V, H + 3) = .Fields!poblacion
-
objExcel.ActiveSheet.Cells(V, H + 4) = .Fields!provincia
-
objExcel.ActiveSheet.Cells(V, H + 5) = .Fields!pais
-
objExcel.ActiveSheet.Cells(V, H + 6) = .Fields!telefono
-
objExcel.ActiveSheet.Cells(V, H + 7) = .Fields!dni
-
V = V + 1
-
.MoveNext
-
End With
-
Loop
-
Set objExcel = Nothing 'una vez hemos terminado descargamos el objeto
-
-
End Sub
La función para iniciar MS Excel.
-
Public Function Inicio_Excel() As Boolean
-
-
Set objExcel = New Excel.Application
-
objExcel.Visible = True 'lo hacemos visible
-
objExcel.SheetsInNewWorkbook = 1 'decimos cuantas hojas queremos en el nuevo documento
-
objExcel.Workbooks.Add ' añadimos el objeto al workbook
-
-
End Function
La función para los encabezados en MS Excel.
-
Public Function Formato_Excel(Num_Campos As Integer, Nombre_Campos() As String) As Boolean
-
-
Dim I As Integer
-
-
With objExcel.ActiveSheet
-
-
'Formato de las celdas de los encabezados
-
.Range(.Cells(3, 1), .Cells(3, Num_Campos)).Borders.LineStyle = xlContinuous
-
.Range(.Cells(3, 1), .Cells(3, 8)).Font.Bold = True
-
-
'Ingresamos el texto a las celdas
-
For I = 1 To Num_Campos - 1 Step 1
-
.Cells(3, I) = Nombre_Campos(I)
-
Next I
-
' asignamos el ancho de las celdas
-
.Columns("A").ColumnWidth = 25
-
.Columns("B").ColumnWidth = 35
-
.Columns("C").ColumnWidth = 30
-
.Columns("D").ColumnWidth = 20
-
.Columns("E").ColumnWidth = 15
-
.Columns("F").ColumnWidth = 15
-
.Columns("G").ColumnWidth = 10
-
.Columns("H").ColumnWidth = 10
-
End With
-
End Function
Espero que te sirva este ejemplo y aqui puedes descargarte los archivos del código.


MUCHISIMAS GRACIAS POR ESTE TRABAJO TAN BONITO, POR SER DE GRAN AYUDA
Gracias por una explicación tan simple y de tanta ayuda