Exportar datos con formato desde Access hasta Excel

Escrito por Administrador

7 de septiembre de 2023

Todos sabemos exportar datos desde Access hasta Excel, pero, ¿y si queremos hacerlo con formato? Hoy os traigo un post de esos que merecen ser guardados en la página de marcadores. Vamos allá.

Antes de nada, si no sabes exportar datos, aquí te explico cómo hacerlo para un formulario continuo filtrado.

Volviendo a nuestro ejemplo, he creado la tabla "Tbl_Resultados" con las calificaciones de un grupo de alumnos, tal y como podéis ver en la figura.

saber-usuarios-conectados-base-datos

La idea consiste en exportar los datos de la tabla desde Microsoft Access hasta Microsoft Excel, definiendo el formato final en el propio código de exportación, para obtener un resultado como éste,

saber-usuarios-conectados-base-datos

El código para conseguirlo es el siguiente,

Public Sub exportar()

Dim AppExcel As Object, rst As DAO.Recordset, SQL As String, Y As Long, A As Long

On Error GoTo ManipularError

SQL = "SELECT * FROM Tbl_Resultados"
Set rst = CurrentDb.OpenRecordset(SQL, dbOpenForwardOnly)
Set AppExcel = CreateObject("Excel.application")

'Crea un libro de trabajo nuevo y vacío

AppExcel.Workbooks.Add

'Edito la hoja 1

With AppExcel.Sheets(1)

'Formato de los datos

With .Range("A:E")
.Font.Name = "Calibri"      'Tipo de letra
.Font.Size = 9.5                     'Tamaño de letra
.ColumnWidth = 13             'Ancho de columna
End With

'Formato para el encabezado

With .Range("A1:E1")
.Font.Size = 10                      'Tamaño de letra
.Font.FontStyle = "Bold"    'Estilo de letra(Negrita)
.Interior.ColorIndex = 14    'Color de relleno de celda
End With

.Name = "Alumnos"                              'Nombre de la hoja 1
.Cells(1, 1) = "IDENTIFICADOR"     'Nombre de columna
.Cells(1, 2) = "NOMBRE"                    'Nombre de columna
.Cells(1, 3) = "APELLIDO 1"              'Nombre de columna
.Cells(1, 4) = "APELLIDO 2"              'Nombre de columna
.Cells(1, 5) = "CALIFICACION"        'Nombre de columna
Y = 2

While Not rst.EOF

'Relleno de filas de datos

If rst!Calificacion > 5 Then A = A + 1   'Conteo de alumnos aprobados
.Cells(Y, 1) = rst!Id_Alumno
.Cells(Y, 2) = rst!Nombre
.Cells(Y, 3) = rst!Apellido1
.Cells(Y, 4) = rst!Apellido2
.Cells(Y, 5) = rst!Calificacion
Y = Y + 1: rst.MoveNext
Wend

'Formato del totalizador

Y = Y + 1
.Cells(Y, 4) = "APROBADOS"               'Nombre de la celda
.Cells(Y, 4).Font.FontStyle = "Bold"      'Estilo de letra(Negrita)
.Cells(Y, 4).Font.Size = 10                        'Tamaño de letra
.Cells(Y, 4).Interior.ColorIndex = 14      'Color de relleno de celda
.Cells(Y, 5) = A                                           'Total de alumnos aprobados
.Cells(Y, 5).Font.FontStyle = "Bold"       'Estilo de letra(Negrita)
.Cells(Y, 5).Font.Size = 10                         'Tamaño de letra
End With

rst.Close: Set rst = Nothing
AppExcel.Visible = True: Set AppExcel = Nothing

Exit Sub

ManipularError:

If Not rst Is Nothing Then rst.Close: Set rst = Nothing
If Not AppExcel Is Nothing Then AppExcel.DisplayAlerts = False: AppExcel.Quit: Set AppExcel = Nothing

End Sub

Ya sólo tendremos que pulsar el botón del formulario "Frm_Exportar" para ejecutar el código anterior.

saber-usuarios-conectados-base-datos

Espero que con este ejemplo hayas aprendido a exportar datos con formato desde Access hasta Excel usando VBA. Descárgate el archivo de ejemplo y practica.

Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.

Hasta la próxima.

Si te ha servido y quieres donar

Descarga el archivo del ejemplo

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Últimas publicaciones

Categorías

abril 2024
LMXJVSD
1234567
891011121314
15161718192021
22232425262728
2930 

Debates en el foro

Avatar
Formularios con ADO

Contacto