jueves, 16 de diciembre de 2021

Exportar datos de un ListBox con extensión XLS

En este ejemplo les muestro el código que hace posible la exportación de datos a un libro nuevo con la extensión .xls.

Para que esto sea posible realizar lo siguiente:

  1. Crear hoja1 con datos.
  2. Crear hoja2 sin datos
  3. Ingresar al editor VBA Excel.
  4. Insertar un formulario con los componentes:
    • Cuadro de lista (ListBox1).
    • Botón de comando (CommandButton1).
  5. Escribir el siguiente código.
Private Sub UserForm_Initialize()
Dim lngregistros, i As Long
Dim intfila As Integer
'Definimos el número de columnas
Me.ListBox1.ColumnCount = 7
'Definimos el ancho de cada columna
Me.ListBox1.ColumnWidths = "30;160;80;80;80;80;80"
'Limpiar el lixtbox
ListBox1.Clear
'Agregar el elemento en las respectivas columnas
ListBox1.AddItem
intfila = ListBox1.ListCount - 1
ListBox1.Column(0, intfila) = "ID"
ListBox1.Column(1, intfila) = "NOMBRE"
ListBox1.Column(2, intfila) = "FEC_NAC"
ListBox1.Column(3, intfila) = "SEXO"
ListBox1.Column(4, intfila) = "DIRECCION"
ListBox1.Column(5, intfila) = "TELEFONO"
ListBox1.Column(6, intfila) = "CORREO"
'Contamos el numero de registros en la hoja 1
lngregistros = Hoja1.Range("A1").CurrentRegion.Rows.Count
'Recorre todos los registros a partir de la fila 2 de la hoja1
For i = 2 To lngregistros
'Carga los registros al ListBox1
    ListBox1.AddItem Hoja1.Cells(i, 1)
    ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Hoja1.Cells(i, 2)
    ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Hoja1.Cells(i, 3)
    ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Hoja1.Cells(i, 4)
    ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Hoja1.Cells(i, 5)
    ListBox1.List(Me.ListBox1.ListCount - 1, 5) = Hoja1.Cells(i, 6)
    ListBox1.List(Me.ListBox1.ListCount - 1, 6) = Hoja1.Cells(i, 7)
Next i
End Sub
Private Sub CommandButton1_Click()
Dim i As Integer
Dim f As Integer
Dim strruta As String
Dim strnomfile As String
'Selecciona y limpia la hoja2
Hoja2.Select
Hoja2.Cells.Select
Selection.ClearContents
Hoja2.Range("A1").Select
'Recorre los registros almacenados en ListBox1
For i = 0 To Me.ListBox1.ListCount - 1
'Envía registro por registro a la hoja 2
    f = f + 1
    Hoja2.Cells(f, 1) = Me.ListBox1.List(i, 0)
    Hoja2.Cells(f, 2) = Me.ListBox1.List(i, 1)
    Hoja2.Cells(f, 3) = Me.ListBox1.List(i, 2)
    Hoja2.Cells(f, 4) = Me.ListBox1.List(i, 3)
    Hoja2.Cells(f, 5) = Me.ListBox1.List(i, 4)
    Hoja2.Cells(f, 6) = Me.ListBox1.List(i, 5)
    Hoja2.Cells(f, 7) = Me.ListBox1.List(i, 6)
Next i
MsgBox "La información ha sido actualizada", vbInformation, "Exportar datos"
'Definimos la ruta donde se guarda el archivo
strruta = "C:\Users\Dell\Desktop\"
'Asignamos un nombre al archivo
strnomfile = "ReporteDatos_" & Format(Date, "dd-mm-yyyy")
'Copia la informacion
ActiveSheet.Copy
'Guarda la informacion en la ruta indicada
ActiveWorkbook.SaveAs strruta & strnomfile
'Cierra el libro
ActiveWorkbook.Close
MsgBox "El reporte se generó con éxito", vbInformation, "Exportar datos"
'Se cierra el formulario
Unload Me
End Sub

Hoja 1 con datos y Hoja 2


Exportar datos de ListBox a XLS

Reporte de datos generado







No hay comentarios.:

Publicar un comentario