Exportar datos de un ListBox a un archivo .txt

Hola!

Estimado Experto, necesito de tu invaluable ayuda para ver como podría hacer para exportar los datos de un listbox a un archivo de txt, el listbox muestra 7 columnas.

De antemano,muchas gracias por tu ayuda.

Saludos

1 respuesta

Respuesta
1

Esta es la macro

Private Sub CommandButton1_Click()
'Copia listbox a txt
'Por.Dam
Sheets("Hoja2").Select
Sheets("Hoja2").Cells.Clear
ufila = Range("A" & Rows.Count).End(xlUp).Row
For i = 0 To ListBox1.ListCount - 1
    Sheets("Hoja2").Range("A" & ufila) = ListBox1.List(i, 0)
    Sheets("Hoja2").Range("B" & ufila) = ListBox1.List(i, 1)
    Sheets("Hoja2").Range("C" & ufila) = ListBox1.List(i, 2)
    Sheets("Hoja2").Range("D" & ufila) = ListBox1.List(i, 3)
    Sheets("Hoja2").Range("E" & ufila) = ListBox1.List(i, 4)
    Sheets("Hoja2").Range("F" & ufila) = ListBox1.List(i, 5)
    Sheets("Hoja2").Range("G" & ufila) = ListBox1.List(i, 6)
    ufila = ufila + 1
Next
    ActiveWorkbook.SaveAs Filename:="list a txt.txt" _
        , FileFormat:=xlText, CreateBackup:=False
MsgBox "Listbox copiado a archivo txt"

Tienes que crear una hoja llamada "Hoja2" para poner temporalmente los datos del list y después guardarlos como txt.

Saludos. Dam
Si es lo que necesitas.

Hola muchas gracias por la respuesta, funciona muy bien, solo que me guarda el libro y la hoja activos, con el mismo nombre del txt que generamos.

Necesito que únicamente me genere el txt, y ojala simplemente lo abra, sin guardarlo en el disco, y que no me altere el libro en el que estoy trabajando ni la hoja creada para el procedimiento.

De antemano, muchas gracias!

Utiliza esta macro

Private Sub CommandButton1_Click()
'Copia listbox a txt
'Por.Dam
Set temp = Sheets.Add
ufila = Range("A" & Rows.Count).End(xlUp).Row
For i = 0 To ListBox1.ListCount - 1
    Sheets(temp.Name).Range("A" & ufila) = ListBox1.List(i, 0)
    Sheets(temp.Name).Range("B" & ufila) = ListBox1.List(i, 1)
    Sheets(temp.Name).Range("C" & ufila) = ListBox1.List(i, 2)
    Sheets(temp.Name).Range("D" & ufila) = ListBox1.List(i, 3)
    Sheets(temp.Name).Range("E" & ufila) = ListBox1.List(i, 4)
    Sheets(temp.Name).Range("F" & ufila) = ListBox1.List(i, 5)
    Sheets(temp.Name).Range("G" & ufila) = ListBox1.List(i, 6)
    ufila = ufila + 1
Next
    Range("A1").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Copy
    Shell "notepad.exe", vbNormalFocus
    SendKeys "^V"
    DoEvents
    Application.DisplayAlerts = False
    Worksheets(temp.Name).Delete
    Application.DisplayAlerts = True
End Sub

Saludos.Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas