Como pasar un txt a Excel desde unas filas especificas del txt

Tengo la siguiente macro con la cual necesito ayuda

Funciona pero solo quiero traer desde la línea 14

Que detecte todos los datos (sin el total de la columna 176)

eliminar columna 225 que es un s

adjunto macro y ejemplo 

Dim NombreArchivo As String
NombreArchivo = Application.GetOpenFilename()

Application.CutCopyMode = False
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & NombreArchivo, Destination:=Range( _
"$A$7"))
.Name = "STOCK"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileFixedColumnWidths = Array(23, 20, 32, 32, 32, 33, 9, 14, 14, 10)
.TextFileThousandsSeparator = ","
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With

RESULTADO :

1 Respuesta

Respuesta
2

¿Cuántas columnas tieneel archivo(s) *.txt? Y el número de filas ¿es fijo o varía? Entiendo que en la fila 14 siempre comienza lo que te interesa pero, repito ¿el número total de filas es igual?

Eso que llamas "total de la columna 176" y "total de la columna 225" ¿coinciden en las filas o solo lo parece?

Abraham Valencia

Hola

223 columnas no varían

El numero de filas si varia

Para eliminar los títulos comenzar de fila 14

Creo, por las imágenes, que los campos están separados por tabulaciones, entonces, esto debería darte resultado:

Option Explicit
Sub ExtrarFilasyColumnastxt()
Dim NombreArchivo As String, Todoslosregistros As String
Dim Registros() As String, Campos() As String
Dim Canal As Long, Columna As Long, Fila As Long, x As Long, h As Long, y As Long
Let NombreArchivo = ThisWorkbook.Path & "\datodatotab.txt"
Let Canal = FreeFile
Open NombreArchivo For Binary As #Canal
Let Todoslosregistros = Space(LOF(Canal))
Get #Canal, , Todoslosregistros
Close #Canal
Let Registros = Split(Todoslosregistros, vbCrLf)
For x = 0 To UBound(Registros)
Let Campos = Split(Registros(x), vbTab)
If UBound(Campos) > Columnas Then Columnas = UBound(Campos)
Next
For y = 13 To UBound(Registros)
Let Fila = y - 12
Let Campos = Split(Registros(y), vbTab)
For h = 0 To Columnas
Let Columna = h + 1
Cells(Fila, Columna) = Campos(h)
Next h
Next y
End Sub

Prueba y comentas. Trata de entenderlo y cualquier cosa pregunta. 

Salu2

Abraham Valencia

Ah, por cierto, esta línea:

Let NombreArchivo = ThisWorkbook.Path & "\datodatotab.txt"

Puedes cambiarla por tu "Application.GetOpenFilename()"

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas