Necesito una macro para generar varios txt

Necesito una macro para generar varios txt a partir de un hoja excel, con un bucle y con una variable para que en función de una dato de una celda se genere los ficheros con la misma cabecera y varias lineas o una cabecera con una linea si no se repite este dato

1 respuesta

Respuesta
1
Para crear un archivo .txt desde una macro puedes utilizar algo como:
Dim namefile As String
namefile = "C:\Archivos\archivo.txt"
Open namefile For Output As #1
Print #1, Range("A1")
Print #1, Range("A2")
Print #1, Range("A3")
Close #1

Por lo tanto, la información que coloques en el archivo dependerá de las celdas que imprimas en él.
Hola tavopz, lo que necesito es generar una serie ilimitada de fichero txt a partir de los datos de una hoja exel, además necesito para construirlos que si se repiten los datos de una celda, comience a con una cabecera y se añadan otras celdas hasta que el dato varíe y se cierre el fichero y se genero otro
Entiendo, debes utilizar el código que te envié arriba e implementar un Loop que se repita y utilizar variables para los datos que cambien entre cada repetición del Loop.
¿Tienes alguna idea de Macros? ¿Lla información que te doy es de utilidad o te hablo en chino?
Pues realmente la información que me das no es de ninguna utilidad, crear un bucle con Do loop es sencillo, mi problema es crear la variable, entiendo que no sabes responder a mi pregunta, a lo mejor soy yo el que te hablo en chino.
Saludos
Quizás con un ejemplo:
http://es.geocities.com/webtavopz/Files/ejemplo_macro_creartxt.xls
La macro está así:
Sub creararchivos()
For i = 1 To 10
Dim namefile As String
namefile = "C:\Temp\archivo" & Str(LTrim(i)) & ".txt"
Open namefile For Output As #1
Print #1, Cells(i, 1)
Print #1, Cells(i, 2)
Print #1, Cells(i, 3)
Print #1, Cells(i, 4)
Print #1, Cells(i, 5)
Print #1, Cells(i, 6)
Close #1
Next i
End Sub
Ten en cuenta que los archivos se crearán en un directorio llamado "Temp" del disco C, si no existe este directorio saldrá error. Las celdas de las columnas a hasta F se irán grabando en archivos consecutivos llamados "archivo X" donde X es el número consecutivo.
Hola, creo que me NO estoy explicando bien, te lo voy a intentar describir como si fuera la hoja excel
               A B C D E
1 TC 2345
2 TC 4434
3 SS 2314
4 WE 6578
5 WE 9087
Primero la variable debe reconocer si A2 es igual a A1, si es así genera con el bucle un fichero txt con este formato.
TC
2345
4434
Siendo TC la cabecera y las celda C1 Y C2 la filas del fichero, si A2 fuera distinto a A1, entonces el resultado sería:
TC
2345
Y así consecutivamente, no se como resolver el problema de las variables para que discrimine las cabeceras si se repiten y solo grabe la celda de la fila C. Sé que es complicado, disculpa si no logro explicarme, pero es complicado, en cualquier caso gracias por tu ayuda.
Saludos
Revisa este:
http://es.geocities.com/webtavopz/Files/ejemplo_macro_creartxt1.xls
Hola experto, es perfecta, solo un problema, el fichero generado en txt, la lineas que no son cabecera (la primera) aparecen con un espacio, así
TC
2345
4434
Necesito que estén a la misma altura, justo en la izquierda, sin espacios, creo que se genera el espacio porque lo que hace es copiar la celda A2 vacía y luego la B2, alguna idea para resolver el problema, ya he implementado el bucle y solo fala es detalle. Muchísimas gracias por la ayuda y disculpa las molestias
Con esto debería quedar bien:
Sub creararchivos()
For i = 1 To 5
Dim namefile As String
namefile = "C:\Temp\archivo" & Str(LTrim(i)) & ".txt"
Open namefile For Output As #1
Print #1, LTrim(Cells(i, 1))
Print #1, LTrim(Cells(i, 2))

siguiente:
If Cells(i, 1) = Cells(i + 1, 1) Then
i = i + 1
Print #1, LTrim(Cells(i, 2))
GoTo siguiente
End If
Close #1
Next i
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas