Editar_Adicionar rutina a macro para TXT

Tengo esta macro del amigo Abraham Valencia.

Sub TxtColumna()
Range("A1:B40"). Copy
Workbooks. Add xlWBATWorksheet
Range("A1"). PasteSpecial xlPasteValues AndNumberFormats
ActiveWorkbook.SaveAs Filename:= "D:\MiCarpeta\ MiArchivo.txt", FileFormat: =xlTextMSDOS
ActiveWorkbook.Close False
MsgBox "Archivo creado"
End Sub

Quisiera siempre que se pueda, agregarle rutina para que copie el texto desde excel

al archivo.txt de la siguiente forma

Respuesta
1

[Hola

Mi primera respuesta iba a ser: "Eso es exactamente lo que hace", pero veo que los datos no son exactamente igual ¿a qué se debe?

Abraham Valencia

Gracias Abraham.

Puede ser, pero procedí a la ejecución de tu macro y me copia el texto al BlockNotas tal como lo ves en esta imagen

Yo hice como quisiera que quedara. Fíjate Abraham que en el blocknotas separe la palabra NUEVO dándole tabulación para que quedara como yo la quisiera ver en el blockNotas después de ejecutada la macro.

Si te fijas en la imagen del Excel, la descripción "Listado de repuestos para venta esta en la columna A y Categoría (NUEVO ETC) está en la B.

Entre las 2 imágenes del BlockNotas, hay diferencia de como quisiera quedara y como queda después de ejecutada la macro

[Hola

Te entendí mejor.

Ojo a algunas cosas, una vez convertido a archivo *.txt, aunque se ve desordenado, cuando lo vuelves a abrir con Excel, pues quedará (a menos que elijas que no) tal cual el archivo original.

No olvides que los archivos *.txt son "planos", si al crearlos no indicas que dejen espacios y/o tabulaciones, pues no lo harán. En Excel lo ves distintos pues, hay un formato predeterminado para cada columna.

Si tu idea es que por una cuestión estética se vea tal cual has mostrado, hay que usar otro tipo de instrucciones pero asimismo, tienes que comentar/decir a partir de que número de número de columna deberían comenzar a aparecer en el archivo *.txt, los datos de la segunda columnas del Excel.

En el ejemplo, yo he colocado que la segunda columna de Excel se inserte a partir de la columnas 60 de *.txt:

Sub Prueba()
Dim miRango As Range
Dim Valores As Variant
Dim x As Integer, nFilas As Integer
Set miRango = Range("A1:B40")
Open "D:\MiArchivo.txt" For Output As 1
Let Valores = miRango.Value
Let nFilas = miRango.Rows.Count
For x = 1 To nFilas
    Print #1, Tab(1); Valores(x, 1); Tab(60); Valores(x, 2)
Next x
Close #1
End Sub

El valor a la variable "Valores" se los doy tipo "Array" (matriz); como la matriz tiene dos columnas a través del "Print" insertamos los datos de cada fila del "Array", la primera columna a partir de la columna 1 del archivo *.txt, y la segunda a partir de la 60.

OJO, puede traer confusión/problemas si alguna celda de la columna "A" tienen más de 60 caracteres.

Saludos]

Abraham Valencia

PD: En un archivo *.txt, una columnas tiene el ancho de un solo caracter.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas