Saltar al contenido

Pasar Datos una sola columna a un TXT separdo por "," sin espacios


macdanmx

Recommended Posts

publicado

Team,

Espero me puedan apoyar con los siguiente, en una sola columna de excel tengo 7647 registros desde "A1:A7647", lo que necesito es a través de una macro pasar estas cantidades a un archivo TXT sin espacios, solo separados por ",".

Quise hacerlo seleccionando de la fila la misma cantidad de columnas que hay para copiar y trasponer, pero al momento de copiarlos a un TXT, me deja mucho espacios entra cada dato.

Ejemplo:

Excel

A1 17564,

A2 34899,

Copiar y Trasponer

17564, 34899,

Seleccionar y pegar en TXT

17564, 34899,

Y lo que necesito es que esten así:

17564,34899,

Anexo envío los archivos como ejemplo.

De antemano gracias y quedo al pendiente de cualquier noticia al respecto.

Excel Pasar a TXT.zip

publicado

Bueno, no me he dado cuenta de la hora, te lanzo una idea

Sub Transponer_y_Texto()
Dim wsDatos As Worksheet, wsTemp As Worksheet
Dim rgDatos As Range
Dim x As String, rng As Range, cel As Range

Set wsDatos = ThisWorkbook.Worksheets("Hoja2")
Application.ActiveSheet.Copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Temp"
Set wsTemp = Worksheets("Temp")
Application.CutCopyMode = False

Application.ScreenUpdating = False

With ActiveSheet
Set rng = .Range("A1:A36565")
For Each cel In rng
x = x & cel.Value
Next
.Range("A1").Value = x
End With

ruta = ActiveWorkbook.Path & "\"
wsTemp.Move
ChDir ruta
ActiveWorkbook.SaveAs Filename:= _
ruta & "Ejemplo.txt", FileFormat:=xlText, CreateBackup:=False
ActiveWorkbook.Close (False)

Application.ScreenUpdating = True

Set rngDatos = Nothing
Set wsTemp = Nothing
Set wsDatos = Nothing
End Sub[/CODE]

publicado

Re: Pasar Datos una sola columna a un TXT separdo por "," sin espacios

icehell,

Dame oportunidad de probarla y te aviso.....

Seguimos al pendiente.

- - - - - Mensaje combinado - - - - -

Icehell,

Qué crees, probe el código, pero hay algo raro, se pierde la secuencia en la fila 4096 con el dato 1211643, de allí en adelante aparecen datos de otro rango, se ve raro, como quiera te anexo el archivo TXT que se generó para que lo veas.

Seguimos en touch.

Ejemplo.rar

publicado

Perdona la verdad es que no sé mucho de este tema pero he estado leyendo algo y este es el resultado, espero sea lo que estabas buscando.

Sub Pasar_Columna_Filas_txt()
Dim wsDatos As Worksheet, wsTemp As Worksheet
Dim x As Variant, rng As Range, cel As Range
Dim valor() As Variant
'Carga hoja
Set wsDatos = ThisWorkbook.Worksheets("Hoja2")
Application.ScreenUpdating = False
'Carga rango, crea hoja Temporal y Traspone la columna en fila
Range("A7647").Select
Range(Selection, Selection.End(xlUp)).Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Temp"
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
'Carga hoja temporal en memoria
Set wsTemp = Worksheets("Temp")
Application.CutCopyMode = False
'Define la ruta donde queremos que se nos guarde y modifique el archivo
ruta = ActiveWorkbook.Path & "\"
'Si no existe lo crea
Open ruta & "DATOS.txt" For Append As 1
'Comienza en la Hoja temporal rango A1
[a1].Select
sube:
'Lo hice en paquetes de 20
valor = Array(ActiveCell, ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 2), ActiveCell.Offset(0, 3), _
ActiveCell.Offset(0, 4), ActiveCell.Offset(0, 5), ActiveCell.Offset(0, 6), ActiveCell.Offset(0, 7), ActiveCell.Offset(0, 8), ActiveCell.Offset(0, 9), _
ActiveCell.Offset(0, 10), ActiveCell.Offset(0, 11), ActiveCell.Offset(0, 12), ActiveCell.Offset(0, 13), ActiveCell.Offset(0, 14), ActiveCell.Offset(0, 15), _
ActiveCell.Offset(0, 16), ActiveCell.Offset(0, 17), ActiveCell.Offset(0, 18), ActiveCell.Offset(0, 19), ActiveCell.Offset(0, 20))

ActiveCell.Offset(0, 21).Select
'Pasa los datos al .txt, uso Print para evitar que salga las comillas al principio y al final
Print #1, valor(0) & valor(1) & valor(2) & valor(3) & valor(4) & valor(5) & valor(6) & valor(7) & valor(8) & valor(9) & valor(10) & valor(11) & valor(12) & valor(13) & valor(14) & valor(15) & valor(16) & valor(17) & valor(18) & valor(19) & valor(20)

If ActiveCell = Empty Then GoTo saltar
'Ejecuta la instrucción mientras la celda activa no esté vacía
GoTo sube:
saltar:
Close #1

'Destruyo la hoja Temp y elimino la alerta de borrado
Application.DisplayAlerts = False
wsTemp.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
'Descargo la memoria
Set rngDatos = Nothing
Set wsTemp = Nothing
'Activo la hoja inicial antes de descargar la memoria
wsDatos.Activate
Set wsDatos = Nothing

End Sub[/CODE]

No lo he probado exaustivamente pero realiza lo que en un principio entendí, Pasa la columna a una fila para posteriormente guardar los datos como archivo de texto, sin comillas y seguido.

Espero comentes.

Un Saludo,

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.