Guardar hoja excel en txt con el nombre de una celda

He tratado de crear una macro que me guarde el area C2:O30 de una hoja como un archivo txt, con el dato que tiene escrito en la celda A1.

La ruta donde se debe guardar es una capeta que se encuentra en la misma ruta donde está el archivo.

Sub GuardarTXT()
Sheets("HOJA3").Select
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\ARCHIVO\" & Cells(1, 1) & ".txt", FileFormat:= _
xlTextMSDOS, CreateBackup:=False
End Sub

Al generar la macro se detiene por un error, pero no sé qué está mal.

1 respuesta

Respuesta
5

Prueba con esta macro

Sub atxt()
'Por.DAM
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    If Range("A1") = "" Then Exit Sub
    n = Range("A1")
    Range("C2:O30").Copy
    Workbooks.Add
    ActiveSheet.Paste
        ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\ARCHIVO\" & n & ".txt", _
            FileFormat:=xlTextMSDOS, CreateBackup:=False
        ActiveWorkbook.Close False
    MsgBox "Archivo: " & n & " creado", vbInformation, "CREAR TXT"
End Sub

Revisa que tengas en A1 un nombre válido. Revisa que exista la carpeta "ARCHIVO" en la ruta donde tienes tu archivo de la macro.

Saludos. Dante Amor

No olvides valorar la respuesta.

Gracias por responder Dante, la macro me funciona bien, pero el txt me sale con unos campos separadisimos unos de otros, eso es porque el formato que estoy copiando tiene ajustadas las columnas a un determinado ancho. ¿Hay alguna manera de que el archivo txt me conserve el formato del ancho de columnas que tiene la hoja de Excel?.

Este formato XltextMsdos, es eque venía en tu macro, antes de ejecutar la macro, guarda el archivo con diferentes formatos para que analices cuál es el que necesitas., por ejemplo, puede ser "Texto delimitado por tabulaciones", "textounicode", "Texto con formato (delimitado por espacios)", "CSV (MS-DOS)". Cuando hayas encontrado el formato que necesitas, abre nuevamente tu archivo, inicia la grabadora de macros, guarda el archivo con el formato que necesitas y revisa el código que generó la macro, obtén el formato y reemplázo en tu macro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas