Macro para crear archivo .txt

He intentado hacer una macro que me permita hacer lo siguiente, pero no lo he logrado:

  1. Crear un nuevo archivo .txt a partir de un archivo en Excel y que me pregunte donde deseo guardar el nuevo archivo .txt
  2. Que el nombre del nuevo archivo sea siempre el mismo asignado desde la macro.
  3. Que el contenido del archivo .txt sean los valores que en el Excel están en el rango (X2:X500). El detalle en este punto es que en el rango indicado, a partir de cierta celda ya no hay valores sino blancos, entonces lo que se envíe al txt deberían ser solo el rango que tiene valores. Por ejemplo, en el rango (X2:X25) tiene valores y del rango (X26:X500) son celdas con blancos, entonces en el txt solo deben aparecer los valores del rango (X2:X25), es decir, el número de celdas con valores puede variar, a veces más o a veces menos.
Respuesta
2

No se comprende bien la consulta:

1- ¿Se trata de tener la macro en un libro que abrirá un archivo Excel (para guardarlo como txt), o la macro estará en el mismo libro Excel donde se encuentra el rango a copiar?

2- En qué hoja estará el rango. Solo se copiará el rango X2 hasta la última con valores en esa columna. ¿Qué significa celdas con blancos? Fórmulas que devuelven vacío o celdas vacías (que no es lo mismo).

Como aquí no es posible dejar códigos o macros (creo que aún no lo tienen resuelto) te pediré que me envíes las aclaraciones a mi correo (cibersoft. Arg de Gmail) para que pueda enviarte desde allí el libro con la macro.

No te pregunté si se trata de una Tabla o solo es un rango de datos lo de tu hoja, así que comento los 2 casos.

Tanto si se trata de una tabla como si se trata de una columna con fórmulas, obtener el fin de rango de la manera habitual (desde Rows. Count) hacia arriba devolverá el total del rango, incluyendo los 0 o vacíos en la col X.

Por lo tanto, para cubrir todas las posibles situaciones (Tabla, fórmulas con 0 y vacíos) debiera contemplarse otro fin de rango a partir de la última fila total obtenida.

    ruta = ThisWorkbook.Path & "\" & "colX.txt"   'ajustar ruta y nombre
    fin = Range("X" & Rows.Count).End(xlUp).Row    'MsgBox fin
    If Range("X" & fin) = "" Then           'reemplazar por 0 si ccorresponde
        While Range("X" & fin).Value = ""   'reemplazar por 0 si ccorresponde
            fin = fin - 1
        Wend
    End If

Ya te envío el libro de muestra.

Sdos!

1 respuesta más de otro experto

Respuesta
1

[Hej

Prueba la macro 

Sub generar_txt()
    'Adriel Ortiz
    ruta = ThisWorkbook.Path & "\" & "nombre_archivo.txt"
    '
    fin = Range("X" & Rows.Count).End(xlUp).Row
    Open ruta For Output As #1
    For i = 2 To fin
        Print #1, Cells(i, "X").Value
    Next
    Close #1
    MsgBox "finish"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas