Excel - exportar desde excel a txt desde macro solo algunas columnas

 
Vista:

exportar desde excel a txt desde macro solo algunas columnas

Publicado por Pablo (2 intervenciones) el 18/11/2021 19:08:28
Estimados como estan, tengo una macro con la cual exporta a txt desde excel, pero necesito solo exportar algunas columnas A B C y todas las filas , mi codigo me trae todas las columnas. Que debo cambiar para exportar solo las antes mencionadas [A B C]?.

Este es mi codigo


Sub CreaTXT()

Dim NombreArchivo, RutaArchivo As String
Dim Obj As FileSystemObject
Dim tx As Scripting.TextStream
Dim Ht As Worksheet
Dim i, j, nFilas, nColumnas As Integer

NombreArchivo = "Batch"
RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".txt"

Set Obj = New FileSystemObject
Set tx = Obj.CreateTextFile(RutaArchivo)
Set Ht = Worksheets("TXT")


nFilas = Ht.Range("A2", Ht.Range("A2").End(xlDown)).Cells.Count
nColumnas = Ht.Range("A1", Ht.Range("A1").End(xlToRight)).Cells.Count


For i = 1 To nFilas
For j = 1 To nColumnas

tx.Write Ht.Cells(i + 1, j)


Next j

tx.WriteLine

Next i



End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

exportar desde excel a txt desde macro solo algunas columnas

Publicado por Antoni Masana (2477 intervenciones) el 18/11/2021 19:47:09
Si solo quieres exportar las tres primeras columnas ¿Para que preguntas cuantas hay?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub CreaTXT()
    Dim NombreArchivo, RutaArchivo As String
    Dim Obj As FileSystemObject
    Dim tx As Scripting.TextStream
    Dim Ht As Worksheet
    Dim i as Long, j as Byte
 
    NombreArchivo = "Batch"
    RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".txt"
 
    Set Obj = New FileSystemObject
    Set tx = Obj.CreateTextFile(RutaArchivo)
    Set Ht = Worksheets("TXT")
 
    For i = 1 To Ht.Range("A2", Ht.Range("A2").End(xlDown)).Cells.Count
        For j = 1 To 3
            tx.Write Ht.Cells(i + 1, j)
        Next j
        tx.WriteLine
    Next i
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

exportar desde excel a txt desde macro solo algunas columnas

Publicado por PAblo (2 intervenciones) el 18/11/2021 20:11:59
Antoni gracias por tu respuesta, pero si quisiera 3 columnas no consecutivas ejemplo [ A F J]?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

exportar desde excel a txt desde macro solo algunas columnas

Publicado por Antoni Masana (2477 intervenciones) el 18/11/2021 21:08:08
En este caso.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub CreaTXT()
    Dim NombreArchivo, RutaArchivo As String
    Dim Obj As FileSystemObject
    Dim tx As Scripting.TextStream
    Dim Ht As Worksheet
    Dim i as Long, j as Byte
 
    NombreArchivo = "Batch"
    RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".txt"
 
    Set Obj = New FileSystemObject
    Set tx = Obj.CreateTextFile(RutaArchivo)
    Set Ht = Worksheets("TXT")
 
    For i = 1 To Ht.Range("A2", Ht.Range("A2").End(xlDown)).Cells.Count
        tx.Write Ht.Cells(i+1, "A")
        tx.Write Ht.Cells(i+1, "F")
        tx.Write Ht.Cells(i+1, "J")
        tx.WriteLine
    Next i
End Sub

En el caso de hacer las columnas 1, 3 y 5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub CreaTXT()
    Dim NombreArchivo, RutaArchivo As String
    Dim Obj As FileSystemObject
    Dim tx As Scripting.TextStream
    Dim Ht As Worksheet
    Dim i as Long, j as Byte
 
    NombreArchivo = "Batch"
    RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".txt"
 
    Set Obj = New FileSystemObject
    Set tx = Obj.CreateTextFile(RutaArchivo)
    Set Ht = Worksheets("TXT")
 
    For i = 1 To Ht.Range("A2", Ht.Range("A2").End(xlDown)).Cells.Count
        For j = 1 To 5 step 2
            tx.Write Ht.Cells(i + 1, j)
        Next j
        tx.WriteLine
    Next i
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar