Macro para convertir un archivo de xls a txt

Necesito su ayuda para convertir un archivo de excel a txt y que la información que en excel se encuentran en columnas se guarde en un archivo txt separado por pipes en forma continua es deciar algo como esto.
antonia|rosado|carballo|calle 14|san jose.

1 respuesta

Respuesta
1
De acuerdo a tu información que me proporcionas veo que solo debe juntar cinco columnas y separarlas por pipes ¿estoy en lo correcto? Bueno pues este código hace lo que quieres solo cópialo a tu editor VBA y ejecutalo, pero antes de eso debes especificar dentro del código la ruta donde se guardará tu archivo ahí te pongo una nota indicandte la linea donde debes modificar y en negrita lo que debes modificar, yo cuando escribí el código me lo guardaba en "C:\PRUEBAS" ya tu sabrás donde lo guardas, esto es importante porque si no especificas bien la ruta te va a sacar error la macro. Y para ejecutar el código posiciónate en la primera celda que contiene la información por ejemplo si tu información esta de la columna A a la columna E debes estar posicionad en "A "en la primera fila que contenga la información, no debe haber renglones en blanco hacia abajo porque hasta ahí se va detener la macro. Este es el código
Sub concatenar()
Application.ScreenUpdating = False
hoja = ActiveSheet.Name
Sheets.Add
ActiveSheet.Name = "recopilacion"
Sheets(hoja).Select
    While ActiveCell.Value <> ""
        val1 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        val2 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        val3 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        val4 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        val5 = ActiveCell.Value
        ActiveCell.Offset(0, -4).Select
        Sheets("recopilacion").Select
        Range("A1").Select
        While ActiveCell.Value <> ""
               ActiveCell.Offset(1, 0).Select
        Wend
        fila1 = Row
        ActiveCell.Value = val1 & "|" & val2 & "|" & val3 & "|" & val4 & "|" & val5
        Sheets(hoja).Select
          ActiveCell.Offset(1, 0).Select
     Wend
  Sheets("recopilacion").Select
  ActiveSheet.Move
  Range("A1").Select
    nbre = InputBox("Nombre del archivo")
    ruta = "C:\Pruebas" 'AQUI DEBES DEFINIR LA RUTA DONDE GUARDARAS TU ARCHIVO
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=ruta & "\" & nbre & ".txt", _
        FileFormat:=xlText, CreateBackup:=False
    ActiveWorkbook.Close
    Application.ScreenUpdating = True
   MsgBox ("Archivo generado exitosamente")
End Sub
Hola
Antes que nada gracias por tu ayuda, copie el código como me indicaste y al ejecutarlo( lo hice con F5 espero sea correcto) me marca un error que dice :
<h2>"se ha producido un error  1004 en tiempo de ejecucion erro definido por la aplicacion o el objeto"</h2>
Ademas al regresar alhoja de excel los datos que tenia se han borrado.
La hoja aparece en blanco.
Por otra parte quería comentarte, en tu descripción hablas de solo 5 columnas que fue el ejemplo que yo te di, quisiera saber si es posible que la macro considerara todas las columnas que contengan información.
En caso de no poder ser así te comento que mi archivo contiene 9 columnas.
Nuevamente agradezco tu ayuda y el tiempo que me brindas.
Saludos y Buen Día.
Yo probé el código y funciona perfectamente revisa bien tus datos como te digo, para empezar debes seleccionar la primera celda superior izquierda de tu tabla donde tienes los datos antes de ejecutar la macro y no debe haber filas en blanco, aquí te mando un enlace en donde explico cómo ejecutar una macro, a ver si te ayuda.
http://www.todoexpertos.com/mitodoexpertos/expert/questions/view/2147575/ocultar-filas-automaticamente

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas