Convertir a txt

¿Ójala me puedas ayudar tengo una macro que convierte los datos que hay en la hoja de excel a txt sin embargo solo lo hace con las primeras cinco filas algo esta fallando y no se es me podrías ayudar?
Sub carga()
'HASTA DONDE
Lines = Application.WorksheetFunction.CountA(Range("a6:a65536"))
Lines = Lines + 4
'catalogo de valores
For x = 6 To Lines
a = Left(Cells(x, 1), 2) & "|"
b = Left(Cells(x, 2), 2) & "|"
c = Cells(x, 3) & "|"
d = Cells(x, 4) & "|"
E = Cells(x, 5) & "|"
F = Right(Cells(x, 6), 2) & "|"
G = Cells(x, 7) & "|"
H = Cells(x, 8) & "|"
I = Cells(x, 9) & "|"
J = Cells(x, 10) & "|"
K = Cells(x, 11) & "|"
L = Cells(x, 12) & "|"
M = Cells(x, 13) & "|"
N = Cells(x, 14) & "|"
O = Cells(x, 15) & "|"
P = Cells(x, 16) & "|"
Q = Cells(x, 17) & "|"
R = Cells(x, 18) & "|"
S = Cells(x, 19) & "|"
T = Cells(x, 20) & "|"
'une datos EMPIEZA EN LA CELDA DE LA z
Cells(x, 38) = a & b & c & d & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T
Next x
'graba en disco
Range(Cells(6, 38), Cells(Lines, 38)).Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
direc = Application.GetSaveAsFilename(InitialFileName:="infoiva", _
fileFilter:="archivos de texto (*.txt), *.txt", Title:="Guardar archivo Carga-Batch Como:")
ActiveWorkbook.SaveAs Filename:= _
direc, FileFormat:= _
xlTextPrinter, CreateBackup:=False
ActiveWindow.Close savechanges:=False
Selection.ClearContents
Range("A6").Select
End Sub

De antemano agradezco la ayuda que me puedas brindar

1 Respuesta

Respuesta
1
Prueba con esto:
Sub ExportRange()
    Dim Filename As String
    Dim NumRows As Long, NumCols As Integer
    Dim r As Long, c As Integer
    Dim Data
    Dim ExpRng As Range
    Set ExpRng = Selection
    NumCols = ExpRng.Columns.Count
    NumRows = ExpRng.Rows.Count
    Filename = "c:\Tu_Ruta\infoiva.txt"
    Open Filename For Output As #1
        For r = 1 To NumRows
            For c = 1 To NumCols
                Data = ExpRng.Cells(r, c).Value
                If IsNumeric(Data) Then Data = Val(Data)
                If IsEmpty(ExpRng.Cells(r, c)) Then Data = ""
                If c <> NumCols Then
                    Write #1, Data;
                Else
                    Write #1, Data
                End If
            Next c
        Next r
    Close #1
End Sub
Gracias por responder solo que tengo un problema
Ahora no hace lo que debe hacer me marca un error y no se por que sea
La idea es que cada celda de una columna se unan y se conviertan en un archivo txt
de tal modo que cada fila en excel sea una linea en txt sin embargo cada dato debe ir separado por un PIPE la macro que yo tengo ya hace todo eso sin embargo solo pasa a txt las primeras cinco filas y necesito que haga eso pero por todas las filas que tengan datos.
Tal vez no me explique correctamente, de antemano gracias
PD Se muy poco acerca de macros ojala me puedas guiar paso a paso
Saludos y Gracias
Sub carga()
Dim NumRows As Long
Dim x As Long, c As Integer
Dim ExpRng As Range
Set ExpRng = Selection
NumRows = ExpRng.Rows.Count
'catalogo de valores
For x = 6 To NumRows
a = Left(Cells(x, 1), 2) & "|"
b = Left(Cells(x, 2), 2) & "|"
... El resto de tu código.
[email protected]
Disculpa las molestias
Perdona que sea tan insistente pero es que mi ignorancia no me deja otra que volverte a molestar
Fíjate que al ejecutarla al llegar a la parte:
Range(Cells(6, 38), Cells(Lines, 38)).Select
¿Se detiene y ya no hace lo demás me podrías indicar por que razón hace eso y si hay alguna solución?
Muchas gracias por regalarme algo de tu tiempo
Saludos
Eso sucede porque quieres unir las columnas con las filas y no has definido bien las columnas. En mi código eso lo tomaba automáticamente pero tú quieres el tuyo, entonces una posible solución sería insertar:
NumCols = ExpRng.Columns.Count
y luego modificar:
Range(Cells(6, 38), NumCols).Select
[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas