Agregué el año a la función de Poner_Registro.
Así quedaría el código actualizado.
[No olvides valorar la respuesta.
Sub EXPORTAR_TXT_ANCHOFIJO()
'Act Por Dante Amor
'
Dim i As Double
ruta = ThisWorkbook.Path & "\"
Set h1 = Sheets(1)
añ1 = Year(CDate(Replace(h1. Cells(2, 15).Value, " de ", " ")))
me1 = Month(CDate(Replace(h1. Cells(2, 15).Value, " de ", " ")))
fe1 = DateSerial(añ1, me1, 1)
'
añ2 = Year(CDate(Replace(h1. Cells(2, 16).Value, " de ", " ")))
me2 = Month(CDate(Replace(h1. Cells(2, 16).Value, " de ", " ")))
fe2 = DateSerial(añ2, me2, 1)
'
fin = h1.Range("A" & Rows.Count).End(xlUp).Row
For i = 4 To fin
arch = ruta & Format(fe1, "yyyy-mm") & "-" & Format(fe2, "yyyy-mm") & ".txt"
c15 = Year(fe1) & "-" & Format(Month(fe1), "00")
c16 = Year(fe2) & "-" & Format(Month(fe2), "00")
'
Open arch For Output As #1
titulos = Poner_Encabezado(h1, c15, c16)
Print #1, titulos
año1 = Format(fe1, "yyyy")
registro = Poner_Registro(h1, i, año1)
Print #1, registro
Close
me1 = me1 + 1
me2 = me2 + 1
fe1 = DateSerial(añ1, me1, 1)
fe2 = DateSerial(añ2, me2, 1)
Next i
MsgBox "Fin"
End Sub
'
Function Poner_Registro(h1, i, año1)
'Asignamos a cada Campo la función que necesitamos aplicar
Campo1 = C_Izq(h1.Cells(i, 1), 2)
Campo2 = C_Izq(h1.Cells(i, 2), 5)
Campo3 = B_Der(h1.Cells(i, 3), 2)
Campo4 = B_Der(h1.Cells(i, 4), 16)
campo5 = C_Izq(h1.Cells(i, 5), 2)
Campo6 = C_Izq(h1.Cells(i, 6), 2)
Campo7 = B_Der(h1.Cells(i, 7), 1)
Campo8 = B_Der(h1.Cells(i, 8), 1)
Campo9 = C_Izq(h1.Cells(i, 9), 2)
Campo10 = C_Izq(h1.Cells(i, 10), 3)
Campo11 = B_Der(h1.Cells(i, 11), 20)
Campo12 = B_Der(h1.Cells(i, 12), 30)
Campo13 = B_Der(h1.Cells(i, 13), 20)
Campo14 = B_Der(h1.Cells(i, 14), 30)
Campo15 = B_Der(h1.Cells(i, 15), 1)
Campo16 = B_Der(h1.Cells(i, 16), 1)
Campo17 = B_Der(h1.Cells(i, 17), 1)
Campo18 = B_Der(h1.Cells(i, 18), 1)
Campo19 = B_Der(h1.Cells(i, 19), 1)
Campo20 = B_Der(h1.Cells(i, 20), 1)
Campo21 = B_Der(h1.Cells(i, 21), 1)
campo22 = B_Der(h1.Cells(i, 22), 1)
Campo23 = B_Der(h1.Cells(i, 23), 1)
Campo24 = B_Der(h1.Cells(i, 24), 1)
Campo25 = B_Der(h1.Cells(i, 25), 1)
Campo26 = B_Der(h1.Cells(i, 26), 1)
Campo27 = B_Der(h1.Cells(i, 27), 1)
Campo28 = B_Der(h1.Cells(i, 28), 1)
Campo29 = B_Der(h1.Cells(i, 29), 1)
Campo30 = C_Izq(h1.Cells(i, 30), 2)
Campo31 = B_Der(h1.Cells(i, 31), 6) ' CODIGO AFP
Campo33 = B_Der(h1.Cells(i, 33), 6) ' CODIGO TRAS AFP
Campo35 = B_Der(h1.Cells(i, 35), 6) ' CODIGO EPS
Campo37 = B_Der(h1.Cells(i, 37), 6) ' CIDOGO TRAS EPS
Campo39 = B_Der(h1.Cells(i, 39), 6) ' CIDIGO CAJA
Campo41 = C_Izq(h1.Cells(i, 41), 2)
Campo42 = C_Izq(h1.Cells(i, 42), 2)
Campo43 = C_Izq(h1.Cells(i, 43), 2)
Campo44 = C_Izq(h1.Cells(i, 44), 2)
Campo45 = C_Izq(h1.Cells(i, 45), 9)
Campo46 = B_Der(h1.Cells(i, 46), 1)
campo47 = C_Izq(h1.Cells(i, 47), 9) 'IBC PENSION
Campo48 = C_Izq(h1.Cells(i, 48), 9) 'IBC SALUD
Campo49 = C_Izq(h1.Cells(i, 49), 9) 'IBC ARL
Campo50 = C_Izq(h1.Cells(i, 50), 9) 'IBC CAJA
Campo52 = CDec(Val(h1.Cells(i, 52))) 'Decimal
'Campo53 = C_Izq(h1.Cells(i, 53), 9) 'cotizacion AFP
temp = Application.WorksheetFunction.RoundUp(h1.Cells(i, 47) * Campo52, -2)
Campo52 = C_Der(h1.Cells(i, 52), 7) 'Tarifa AFP
Campo53 = C_Izq(temp, 9) 'cotizacion AFP
Campo54 = C_Izq(h1.Cells(i, 54), 9)
Campo55 = C_Izq(h1.Cells(i, 55), 9)
Campo56 = C_Izq(h1.Cells(i, 56), 9)
campo57 = String(9, "0")
'nAño = Right(Range("O2").Value, 4)
nAño = año1
Set f = Sheets("Hoja2").Range("A:A").Find(nAño, , xlValues, xlWhole)
If Not f Is Nothing Then
If Val(campo47) >= f.Offset(, 1).Value Then
campo57 = Format(WorksheetFunction.RoundUp(Val((campo47) * 0.5) / 100, -2), "000000000") 'campo57 = Format(Val(campo47) * 0.5, "000000000")
End If
End If
'campo57 = C_Izq(h1.Cells(i, 57), 9) 'FSP SOLIDARIDAD
campo58 = String(9, "0")
'nAño = Right(Range("O2").Value, 4)
Set f = Sheets("Hoja2").Range("A:A").Find(nAño, , xlValues, xlWhole)
If Not f Is Nothing Then
If Val(campo47) >= f.Offset(, 1).Value Then
campo58 = Format(WorksheetFunction.RoundUp(Val((campo47) * 0.5) / 100, -2), "000000000") 'campo57 = Format(Val(campo47) * 0.5, "000000000")
End If
End If
'Campo58 = C_Izq(h1.Cells(i, 58), 9) ' FSP SUBSISTENCIA
Campo59 = C_Izq(h1.Cells(i, 59), 9)
Campo60 = CDec(Val(h1.Cells(i, 60))) 'Decimal
'Campo61 = C_Izq(h1.Cells(i, 61), 9) 'cotizacion EPS
temp = Application.WorksheetFunction.RoundUp(h1.Cells(i, 48) * Campo60, -2)
Campo60 = C_Der(h1.Cells(i, 60), 7) 'tarifa salud
Campo61 = C_Izq(temp, 9) 'cotizacion EPS
campo62 = C_Izq(h1.Cells(i, 62), 9) 'UPC
Campo63 = B_Der(h1.Cells(i, 63), 15)
Campo64 = C_Izq(h1.Cells(i, 64), 9)
Campo65 = B_Der(h1.Cells(i, 65), 15)
Campo66 = C_Izq(h1.Cells(i, 66), 9)
campo67 = C_Der(h1.Cells(i, 67), 9)
Campo68 = C_Der(h1.Cells(i, 68), 9)
Campo69 = C_Izq(h1.Cells(i, 69), 9)
campo70 = C_Der(h1.Cells(i, 70), 7)
Campo71 = C_Izq(h1.Cells(i, 71), 9)
campo72 = C_Der(h1.Cells(i, 72), 7)
Campo73 = C_Izq(h1.Cells(i, 73), 9)
campo74 = C_Der(h1.Cells(i, 74), 7)
Campo75 = C_Izq(h1.Cells(i, 75), 9)
campo76 = C_Der(h1.Cells(i, 76), 7)
Campo77 = C_Izq(h1.Cells(i, 77), 9)
campo78 = C_Der(h1.Cells(i, 78), 7)
Campo79 = C_Izq(h1.Cells(i, 79), 9)
Campo80 = B_Der(h1.Cells(i, 80), 2) 'TIPO UPC COTIZANTE
Campo81 = B_Der(h1.Cells(i, 81), 16) 'CED UPC COTIZANTE
campo82 = C_Izq(h1.Cells(i, 82), 1) 'EXONERACION
Campo83 = B_Der(h1.Cells(i, 83), 6) 'CODI AD ARL
Campo84 = B_Der(h1.Cells(i, 84), 1) 'NIVEL ARL
Campo85 = B_Der(h1.Cells(i, 85), 1) 'INDI TARI ES PEN
Campo86 = B_Der(h1.Cells(i, 86), 10) 'F INGRESO
Campo87 = B_Der(h1.Cells(i, 87), 10) 'F RETIRO
Campo88 = B_Der(h1.Cells(i, 88), 10) 'F VSP
Campo89 = B_Der(h1.Cells(i, 89), 10) 'F I SLN
Campo90 = B_Der(h1.Cells(i, 90), 10) 'F F SLN
Campo91 = B_Der(h1.Cells(i, 91), 10) 'F I IGE
Campo92 = B_Der(h1.Cells(i, 92), 10) 'F F IGE
Campo93 = B_Der(h1.Cells(i, 93), 10) 'F I LMA
Campo94 = B_Der(h1.Cells(i, 94), 10) 'F F LMA
Campo95 = B_Der(h1.Cells(i, 95), 10) 'F I VAC-LR
Campo96 = B_Der(h1.Cells(i, 96), 10) 'F F VAC-LR
Campo97 = B_Der(h1.Cells(i, 97), 10) 'F I VCT
Campo98 = B_Der(h1.Cells(i, 98), 10) 'F F VCT
Campo99 = B_Der(h1.Cells(i, 99), 10) 'F I IRL
Campo100 = B_Der(h1.Cells(i, 100), 10) 'F F IRL
Campo101 = C_Izq(h1.Cells(i, 51), 9) 'IBC PARAFISCALES
Campo102 = C_Izq(h1.Cells(i, 102), 3) 'N HORAS
Campo103 = B_Der(h1.Cells(i, 103), 10) 'F RADI EXTERIOR
If Campo31 = "NIN-AF" Then Campo31 = " " 'CODIGO PENSION
If Campo35 = "NIN-EP" Then Campo35 = " " 'CODIGO SALUD
If Campo39 = "NIN-CC" Then Campo39 = " " 'CODIGO CAJA
If Campo52 = 0 Then Campo52 = "0.00000" 'PENSION
If Campo52 = ".160000" Then Campo52 = "0.16000"
If Campo52 = "0,16000" Then Campo52 = "0.16000"
If Campo52 = ".120000" Then Campo52 = "0.12000"
If Campo52 = ".260000" Then Campo52 = "0.26000"
If Campo52 = ".125000" Then Campo52 = "0.12500"
If Campo52 = ".135000" Then Campo52 = "0.13500"
If Campo52 = ".145000" Then Campo52 = "0.14500"
If Campo52 = ".150000" Then Campo52 = "0.15000"
If Campo52 = ".155000" Then Campo52 = "0.15500"
If Campo60 = 0 Then Campo60 = "0.00000" ' SALUD
If Campo60 = ".040000" Then Campo60 = "0.04000"
If Campo60 = ".125000" Then Campo60 = "0.12500"
If Campo60 = "0,12500" Then Campo60 = "0.12500"
If Campo60 = ".085000" Then Campo60 = "0.08500"
If Campo60 = ".015000" Then Campo60 = "0.01500"
If Campo60 = ".120000" Then Campo60 = "0.12000"
If campo67 = 0 Then campo67 = "0.0000000" 'RIESGOS
If campo67 = ".01044000" Then campo67 = "0.0104400"
If campo67 = ".02436000" Then campo67 = "0.0243600"
If campo67 = ".00522000" Then campo67 = "0.0052200"
If campo67 = ".04350000" Then campo67 = "0.0435000"
If campo67 = ".06960000" Then campo67 = "0.0696000"
If campo70 = 0 Then campo70 = "0.00000" 'CAJA
If campo70 = ".040000" Then campo70 = "0.04000"
If campo72 = 0 Then campo72 = "0.00000" 'SENA
If campo72 = ".020000" Then campo72 = "0.02000"
If campo72 = ".005000" Then campo72 = "0.00500"
If campo74 = 0 Then campo74 = "0.00000" 'ICBF
If campo74 = ".030000" Then campo74 = "0.03000"
If campo76 = 0 Then campo76 = "0.00000" 'ESAP
If campo76 = ".005000" Then campo76 = "0.00500"
If campo78 = 0 Then campo78 = "0.00000" 'MINISTERIO
If campo78 = ".010000" Then campo78 = "0.01000"
If Campo60 = "0.04000" Then campo82 = "S" 'EXONE
If Campo60 = "0.12500" Then campo82 = "N" 'EXONE
If Campo60 = "0.00000" Then campo82 = "N" 'EXONE
If Campo60 = "0.08500" Then campo82 = "N" 'EXONE
If Campo60 = "0.01500" Then campo82 = "N" 'EXONE
If campo5 = "40" Then campo82 = "N" 'EXONE
Poner_Registro = Campo1 & Campo2 & Campo3 & Campo4 & campo5 & Campo6 & Campo7 & Campo8 & Campo9 & Campo10 & Campo11 & Campo12 & Campo13 & Campo14 & Campo15 & Campo16 & Campo17 & Campo18 & Campo19 & Campo20 & Campo21 & campo22 & Campo23 & Campo24 & Campo25 & Campo26 & Campo27 & Campo28 & Campo29 & Campo30 & Campo31 & Campo33 & Campo35 & Campo37 & Campo39 & Campo41 & Campo42 & Campo43 & Campo44 & Campo45 & Campo46 & campo47 & Campo48 & Campo49 & Campo50 & campo51 & Campo52 & Campo53 & Campo54 & Campo55 & Campo56 & campo57 & campo58 & Campo59 & Campo60 & Campo61 & campo62 & Campo63 & Campo64 & Campo65 & Campo66 & campo67 & Campo68 & Campo69 & campo70 & Campo71 & campo72 & Campo73 & campo74 & Campo75 & campo76 & Campo77 & campo78 & Campo79 & Campo80 & Campo81 & campo82 & Campo83 & Campo84 & Campo85 & Campo86 & Campo87 & Campo88 & Campo89 & Campo90 & Campo91 & Campo92 & Campo93 & Campo94 & Campo95 & Campo96 & Campo97 & Campo98 & Campo99 & Campo100 & Campo101 & Campo102 & Campo103
End Function
'
Function Poner_Encabezado(h1, c15, c16)
j = 2
Campo1 = C_Izq(h1.Cells(j, 1), 2)
Campo2 = C_Izq(h1.Cells(j, 2), 5)
Campo3 = B_Der(h1.Cells(j, 3), 200)
Campo4 = B_Der(h1.Cells(j, 4), 2)
campo5 = B_Der(h1.Cells(j, 5), 16)
Campo6 = C_Izq(h1.Cells(j, 6), 1)
Campo7 = C_Izq(h1.Cells(j, 7), 1)
Campo8 = B_Der(h1.Cells(j, 8), 10)
Campo9 = B_Der(h1.Cells(j, 9), 10)
Campo10 = C_Izq(h1.Cells(j, 10), 1)
Campo11 = B_Der(h1.Cells(j, 11), 10)
Campo12 = B_Der(h1.Cells(j, 12), 40)
Campo13 = B_Der(h1.Cells(j, 13), 6)
Campo15 = B_Der(h1.Cells(j, 15), 18) 'Period coti
Campo16 = B_Der(h1.Cells(j, 16), 18) 'Periodo ser
Campo17 = B_Der(h1.Cells(j, 17), 10) & " "
Campo18 = C_Izq(h1.Cells(j, 18), 5)
Campo19 = C_Izq(h1.Cells(j, 19), 12)
Campo20 = C_Izq(h1.Cells(j, 20), 2)
Campo21 = C_Izq(h1.Cells(j, 21), 2)
If Campo8 = 0 Then Campo8 = " "
If Campo9 >= 0 Then Campo9 = " "
If Campo15 <> "" Then Campo15 = Format(CDate(Replace(Campo15, " de ", " ")), "yyyy-mm")
If Campo16 <> "" Then Campo16 = Format(CDate(Replace(Campo16, " de ", " ")), "yyyy-mm")
Campo15 = c15
Campo16 = c16
'If Campo15 <> "" Then Campo15 = Format(CDate(Replace(Campo15, " de ", " ")), "yyyy-mm")
'If Campo16 <> "" Then Campo16 = Format(CDate(Replace(Campo16, " de ", " ")), "yyyy-mm")
Poner_Encabezado = Campo1 & Campo2 & Campo3 & Campo4 & campo5 & Campo6 & Campo7 & Campo8 & Campo9 & Campo10 & Campo11 & Campo12 & Campo13 & Campo14 & Campo15 & Campo16 & Campo17 & Campo18 & Campo19 & Campo20 & Campo21
End Function