La macro que elaboré porque teóricamente tu archivo *.txt estaba dividido por "tab"s pero no es así, está dividido por espacios, aunque propiamente dicho lo que ha hecho el programa que creo ese, o esos, archivo(s) es asignarle un número de columna fija con lo que, en realidad, bastaría usar Microsoft Query, a través de VBA, para poder extraer dicha información, ah, claro, puede hacerse eso desde cualquier archivo *.txt de esos, siempre y cuando realmente todos tengan los campos en las columnas supuestas.
Sub ProcesoTXT()
Dim NombreArchivo As String
NombreArchivo = Application.GetOpenFilename()
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & NombreArchivo, Destination:=Range("$A$1"))
.Name = "Mis datos"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 14
.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, 36, 6, 14, 14, 10)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Ah, claro, esos parámetros de las columnas lo he hecho basado en tu ejemplo de *.txt, si tus otros archivos tienen más columnas, vas a tener que adaptarlo. Prueba y comentas
Abraham Valencia