Hola!
Las fechas están en la columna F y G, dentro de la separación están en el array(105,2) y array(113,2). El archivo esta muy pesado... Me las pone en texto. Pero me invierte los días por los meses.
Anexo la macro que utilizo...
Sub Extraer_txt()
'
' Macro para extraer txt
' Hecha por Jazmin Marquez
'
'EXPORTO LOS DATOS DEL TXT A EXCEL
Dim iniTime!
Dim cad As String
Application.ScreenUpdating = False
iniTime = Timer
Workbooks.OpenText Filename:="C:\Users\JJMarquez\Documents\INFO-963-920.dat" _
, Origin:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:= _
Array(Array(0, 1), Array(4, 1), Array(8, 1), Array(16, 1), Array(57, 1), Array(68, 1), _
Array(83, 1), Array(94, 1), Array(100, 1), Array(105, 1), Array(113, 1), Array(122, 1), _
Array(137, 1), Array(153, 1), Array(169, 1), Array(185, 1), Array(189, 1), Array(198, 1), _
Array(212, 1), Array(223, 1), Array(232, 1), Array(243, 1), Array(249, 1), Array(264, 1), _
Array(277, 1), Array(288, 1), Array(309, 1), Array(342, 1), Array(349, 1), Array(363, 1)) _
, TrailingMinusNumbers:=True
'ELIMINO PRIMERAS FILAS CON BASURA, RECORRO LA INFORMACION Y REALIZO PRIMER FILTRO
Rows("1:5").Select
Selection.Delete Shift:=xlUp
Rows("2:2").Select
Selection.Delete Shift:=xlUp
Rows("1:1").Select
Selection.AutoFilter
'ELIMINAR CELDAS EN BLANCO ESPACIOS EN BLANCO
Range("A65000").End(xlUp).Offset(1, 0).Value = "final"
Range("A2").Select
Do While ActiveCell.Value <> "final"
If IsEmpty(ActiveCell) Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
ActiveCell.ClearContents
'ELIMINAR BASURA (CARACTERES ESPECIALES)
Range("A2").Activate
While ActiveCell.Value <> ""
If ActiveCell.Value = "DIR" Then
Selection.EntireRow.Delete
ElseIf ActiveCell.Value = "____" Then
Selection.EntireRow.Delete
ElseIf ActiveCell.Value = "Rela" Then
Selection.EntireRow.Delete
ElseIf ActiveCell.Value = "Suc." Then
Selection.EntireRow.Delete
ElseIf ActiveCell.Value = "=" Then
Selection.EntireRow.Delete
ElseIf ActiveCell.Value = "0" Then
Selection.EntireRow.Delete
ElseIf ActiveCell.Value = "6804" Then
Selection.EntireRow.Delete
ActiveCell.Offset(1, 0).Activate
Else
ActiveCell.Offset(1, 0).Activate
End If
Wend
'ELIMINO BASURA DE OTRA COLUMNA
Range("D2").Activate
While ActiveCell.Value <> ""
If ActiveCell.Value = "a l" Then
Selection.EntireRow.Delete
ElseIf ActiveCell.Value = "a l" Then
Selection.EntireRow.Delete
ActiveCell.Offset(1, 0).Activate
Else
ActiveCell.Offset(1, 0).Activate
End If
Wend
'ELIMINO COLUMNAS QUE NO NECESITO
Columns("C:C").Select
Selection.Delete Shift:=xlToLeft
Columns("F:H").Select
Selection.Delete Shift:=xlToLeft
Columns("J:J").Select
Selection.Delete Shift:=xlToLeft
Columns("K:Y").Select
Selection.Delete Shift:=xlToLeft
Range("J1").Select
'AGREGO LAS DOS COLUMNAS QUE SE NECESITAN PARA HACER LOS CALCULOS
Range("K1").Select
ActiveCell.FormulaR1C1 = "Capital Anterior"
Range("L1").Select
ActiveCell.FormulaR1C1 = "Venta Nueva"
'CAMBIO TODAS LAS FECHAS A 4 DIGITOS EN EL AÑO
For Each cell In Range("F2:F" & Range("F" & Rows.Count).End(xlUp).Row)
If Len(cell) = 8 Then
fec = Mid(cell.Value, 1, 2) & "/" & Mid(cell.Value, 4, 2) & "/" & Mid(cell.Value, 7, 2)
cell.Value = CDate(fec)
Else
fec = Mid(cell.Value, 1, 2) & "/" & Mid(cell.Value, 4, 2) & "/" & Mid(cell.Value, 7, 4)
cell.Value = CDate(fec)
End If
Next cell
For Each cell In Range("G2:G" & Range("G" & Rows.Count).End(xlUp).Row)
If cell = "00/00/00" Then
' no hagas nada
ElseIf Len(cell) = 8 Then
fec = Mid(cell.Value, 1, 2) & "/" & Mid(cell.Value, 4, 2) & "/" & Mid(cell.Value, 7, 2)
cell.Value = CDate(fec)
Else
fec = Mid(cell.Value, 1, 2) & "/" & Mid(cell.Value, 4, 2) & "/" & Mid(cell.Value, 7, 4)
cell.Value = CDate(fec)
End If
Next cell
'ORDENAR DE MAYOR A MENOR EL CONSECUTIVO
Columns("D:D").Select
ActiveWorkbook.Worksheets("INFO-963-920").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("INFO-963-920").Sort.SortFields.Add Key:=Range("D1" _
), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("INFO-963-920").Sort
.SetRange Range("A2:J65536")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'MOVER LA COLUMNA DE CONSECUTIVO A LA PRIMERA COLUMNA "A"
Columns("D:D").Select
Selection.Cut
Columns("A:A").Select
Selection.Insert Shift:=xlToRight