Necesito una macro para generar varios TXT a partir de un listado de Excel

Necesito una macro en Excel que genera varios TXT a partir de un listo en Excel, Debe mantener la primera fila como cabecera o emcabezado para todos los archivos que genere de acuerdo al número de registros que contenga el archivo, Después de la fila 2 debe generar un archivo TXT por cada registro con su cabecera que es la misma para todos.

Necesito que la columna por ejemplo del encabezado o cabecera cambie a medida que va generando los archivo que son los meses como se observa en el siguiente ejemplo.

"Cabecera 2018-01 2018-02

Registro1"

"Cabecera 2018-02 2018-03

Registro 2"

Estos serían los dos primeros archivos a medida que genera los archivos aumentan los meses del encabezado o cabecera.

Respuesta
1

¿Cómo se debe llamar cada archivo txt?

¿Cuántas columnas tiene cada registro?

Si tienes 13 registros, qué se va a poner en la cabecera: 2018-¿13?

Puede poner una imagen de tu hoja para ver lo que tienes y en otra imagen el resultado que esperar en el primer archivo txt.

¡Gracias! POR Responder ingeniero Dante👌

1)El archivo se puede renombrar Con el nombre del periodo o mes ejemplo 2018-01 2018-02.

2)Quisiera que no tenga límite de registros que genere los archivos de acuerdo al número filas que tenga. 

3) los periodos de cotización no pueden ser mayores diciembre (12) te aclaro entonces lo que te coloco es el mes y el año, ejemplo cuando realizó esta indicación, 2018-01 año y mes,  enero 2018. Por este motivo no puede dar 2018-13, Cuando llegue a 2018-12 debe pasar al año 2019-01 y 2019-02 realizó la aclaración son dos columnas en la cabecera, periodo de cotización 2019-01 y periodo de servicio 2019-02.

Es tan amable y me suministra un correo para enviarle un ejemplo con los archivos y la macro que ya tengo definida con los campos establecidos de acuerdo a cada celda.

Desde luego la macro va a funcionar para n número de registros. Lo del 2018-13, te lo puse para que expliques qué hacer, no puedes obviar algo que no explicaste.

Me envías un archivo de excel, en ese archivo, en la hoja1, vas a poner 4 registros. Significa que se deben generar 4 archivos txt. Procura utilizar ejemplos reales en cada registro.

Entonces, también me envías 4 archivos txt con la información que deberá contener cada archivo txt.

Entre más claros y precisos sean los ejemplos, más fácil podré entender y de esa manera entregarte la macro.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “carlos arturo buitrago gaviria

¡Gracias! Dante;

Acabo enviar el correo con la información solicitada, Muchas Gracias estoy pendiente.

Te anexo la macro actualizada

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)
    '
    titulos = Poner_Encabezado(h1)
    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"
        me1 = me1 + 1
        me2 = me2 + 1
        fe1 = DateSerial(añ1, me1, 1)
        fe2 = DateSerial(añ2, me2, 1)
        '
        Open arch For Output As #1
        Print #1, titulos
        registro = Poner_Registro(h1, i)
        Print #1, registro
        Close
    Next i
    MsgBox "Fin"
End Sub
'
Function Poner_Registro(h1, i)
    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 = C_Der(h1.Cells(i, 52), 7)
    Campo53 = C_Izq(h1.Cells(i, 53), 9)
    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 = C_Izq(h1.Cells(i, 57), 9)
    Campo58 = C_Izq(h1.Cells(i, 58), 9)
    Campo59 = C_Izq(h1.Cells(i, 59), 9)
    '
    Campo60 = C_Der(h1.Cells(i, 60), 7) 'tarifa salud
    Campo61 = C_Izq(h1.Cells(i, 61), 9) 'cotizacion salud
    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 = ".120000" Then Campo52 = "0.12000"
    If Campo52 = ".260000" Then Campo52 = "0.26000"
    If Campo60 = 0 Then Campo60 = "0.00000" ' SALUD
    If Campo60 = ".040000" Then Campo60 = "0.04000"
    If Campo60 = ".125000" Then Campo60 = "0.12500"
    If Campo60 = ".085000" Then Campo60 = "0.08500"
    If Campo60 = ".015000" Then Campo60 = "0.01500"
    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 = "S"  '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)
    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")
    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

No olvides cambiar la valoración a la respuesta.

¡Gracias! Dante;

Te informo que me están saliendo uno errores al momento de ejecutar la macro te voy a enviar la información por email, Quedo atento, Gracias.

Si son errores en la conversión de la fecha a texto para nombrar los archivos, con gusto lo reviso, pero sin son errores en tus datos, es decir, en el llenado de los campos, deberás revisar tu información de la hoja; ya que solamente tomé tu macro y le adapté la generación de un archivo por registro.

Listo ingeniero Dante, 

Ya la pude ejecutar , Muchas gracias.

A su correo le envié unas indicaciones ya que no está modificando los meses o periodos dentro del TXT , Quedo atento muchas gracias de nuevo.

Te anexo el código actualizado

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 = añ1 & "-" & Format(me1, "00")
        c16 = añ2 & "-" & Format(me2, "00")
        '
        Open arch For Output As #1
        titulos = Poner_Encabezado(h1, c15, c16)
        Print #1, titulos
        registro = Poner_Registro(h1, i)
        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)
    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 = C_Der(h1.Cells(i, 52), 7)
    Campo53 = C_Izq(h1.Cells(i, 53), 9)
    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 = C_Izq(h1.Cells(i, 57), 9)
    Campo58 = C_Izq(h1.Cells(i, 58), 9)
    Campo59 = C_Izq(h1.Cells(i, 59), 9)
    '
    Campo60 = C_Der(h1.Cells(i, 60), 7) 'tarifa salud
    Campo61 = C_Izq(h1.Cells(i, 61), 9) 'cotizacion salud
    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 = ".120000" Then Campo52 = "0.12000"
    If Campo52 = ".260000" Then Campo52 = "0.26000"
    If Campo60 = 0 Then Campo60 = "0.00000" ' SALUD
    If Campo60 = ".040000" Then Campo60 = "0.04000"
    If Campo60 = ".125000" Then Campo60 = "0.12500"
    If Campo60 = ".085000" Then Campo60 = "0.08500"
    If Campo60 = ".015000" Then Campo60 = "0.01500"
    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 = "S"  '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
    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

[sal u dos

Muchas gracias Dante,

Te acabo de responder ya que no está realizando el proceso correctamente cuando cambia de un año a otro, En este caso pasó a 2018-13 en vez de pasar a 2019-01

Quedo atento a sus comentarios, MUCHAS gracias por su gestión.

Cambia estas líneas:

        c15 = añ1 & "-" & Format(me1, "00")
        c16 = añ2 & "-" & Format(me2, "00")

Por estas:

        c15 = Year(fe1) & "-" & Format(Month(fe1), "00")
        c16 = Year(fe2) & "-" & Format(Month(fe2), "00")

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas