¿Cómo generar archivos txt a partir de varias hojas de excel?

Me encuentro en una situación donde en un libro de excel tengo 60 hojas con distintos nombres las mismas hojas que bsuco como importar esa información a formato txt en una carpeta, me refiriero a que cada hoja sea un archivo txt con el nombre de la hoja.

1 Respuesta

Respuesta
3

Me refiriero a que cada hoja sea un archivo txt

Cómo quieres el txt, separado por comas, por tabulación, csv, etc.

Realiza lo siguiente con una de tus hojas para generar un archivo txt:

  1. Selecciona una hoja.
  2. Activa la grabadora de macros.
  3. Guarda la hoja con el formato de texto que deseas.
  4. Regresa a las macros para detener la grabación.
  5. Revisa en VBA el código, copia el código y lo pegas aquí (utiliza el icono para poner código).

Reviso el código y genero un ciclo para todas tus hojas.

Solo me genera la línea de guardado
ActiveWorkbook.SaveAs Filename:= _
"C:\Desktop\Archivos\file1.txt", FileFormat:=xlTextMSDOS, _
CreateBackup:=False

Quiero saber si se puede hacer pero con todas las hojas independientes colocando el nombre del archivo

De antemano muchas gracias!

genere este codigo pero me atore en el For
Sub HojasATxt()
Dim ws As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
Sheets.Select
ActiveWorkbook.SaveAs Filename:="C:\Desktop\Archivos\" & ws.name & ".txt", _
FileFormat:=xlText, CreateBackup:=False
Next
End Sub

Solo me genera la línea de guardado

Eso es lo que necesito, por eso te escribí esto:

Reviso el código y genero un ciclo para todas tus hojas.

genere este codigo pero me atore en el For

Debes poner el código utilizando el icono para inserta código.


Prueba lo siguiente:

Sub Genera_TXT()
  Dim sh As Worksheet, sName As String
  '
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  For Each sh In Sheets
    sName = sh.Name & ".txt"
    sh.Copy
    ActiveWorkbook.SaveAs Filename:="C:\Desktop\Archivos\" & sName, FileFormat:=xlTextMSDOS
    ActiveWorkbook.Close
  Next
  Application.ScreenUpdating = True
  MsgBox "Fin"
End Sub

¡Muchísimas Gracias! Me sirvió bastante.

Contento de ayudarte, gra cias por comentar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas