# HACIENDA MOD 190: De hoja excel a fichero 190.txt Importación a MOD 190

##### <span style="color: rgb(22, 145, 121);">**¿Qué es el fichero 190.txt?**</span>

La declaración 190 puede importarse **con un fichero texto 190.txt** que tiene que tener el siguiente formato :

- Formato del fichero : en [https://sede.agenciatributaria.gob.es/Sede/ayuda/disenos-registro/modelos.html](https://sede.agenciatributaria.gob.es/Sede/ayuda/disenos-registro/modelos.html)
    - [Formato para 2024 ](https://sede.agenciatributaria.gob.es/static_files/Sede/Disenyo_registro/DR_100_199/archivos_24/DISENOS_LOGICOS_190-2024.pdf)
    - [Formato para 2025 cambia posiciones 389 a 395 registro tipo 2](https://sede.agenciatributaria.gob.es/static_files/Sede/Disenyo_registro/DR_100_199/archivos_25/DISENOS_LOGICOS_190_2025.pdf)
- Formato de la naturaleza de los campos [https://sede.agenciatributaria.gob.es/Sede/ayuda/consultas-informaticas/presentacion-declaraciones-ayuda-tecnica/errores-importacion-ficheros/frech-fichero-se-rechazo-caracteres-permitidos.html](https://sede.agenciatributaria.gob.es/Sede/ayuda/consultas-informaticas/presentacion-declaraciones-ayuda-tecnica/errores-importacion-ficheros/frech-fichero-se-rechazo-caracteres-permitidos.html)
- Todos los textos van en mayúsculas, sin acentos, ni caracteres extraños como º ª excepto el @ en el campo correo electrónico del registro tipo 1
- El fichero tiene el formato ISO-8859-1 y si lo necesitas editar, no hacerlo con el bloc de notas de Windows sino con Notepad++ [https://notepad-plus-plus.org/downloads/](https://notepad-plus-plus.org/downloads/)
- En esas instrucciones hay dos tipos de registros de 500 carácteres 
    - <span style="text-decoration: underline;">TIPO 1</span> sólo uno con los datos del declarante.
    - <span style="text-decoration: underline;">TIPO 2 </span>con los datos de cada preceptor. Un registro por cada uno.

##### <span style="color: rgb(22, 145, 121);">**Empezamos del fichero Excell**</span>

Abre el fichero Excel 190-xx-conscript**.xlsm** que hemos conseguido anteriormente

<p class="callout warning">**IMPORTANTE** tiene que tener ese mismo orden</p>

[![2026-01-05 20_44_34-Libro2 - Excel.png](https://libros.catedu.es/uploads/images/gallery/2026-01/scaled-1680-/2026-01-05-20-44-34-libro2-excel.png)](https://libros.catedu.es/uploads/images/gallery/2026-01/2026-01-05-20-44-34-libro2-excel.png)

Una vez que lo tienes haces lo siguiente

1. Abre el archivo Excel.
2. Presiona Alt + F11 para abrir el editor de VBA.
3. En el editor, haz clic en Insertar &gt; Módulo.
4. Copia y pega el siguiente código:

<p class="callout danger">ATENCIÓN, CAMBIA LO SIGUIENTE **PERO SIN QUITAR Y PONER CARÁCTERES**</p>

<p class="callout info">ES DECIR si cambias CATEDU por CP JUAN DE LANUZA suprime tantos espacios en blanco para que el siguiente carácter que es la T esté en el mismo lugar, si miras [https://sede.agenciatributaria.gob.es/static\_files/Sede/Disenyo\_registro/DR\_100\_199/archivos\_24/DISENOS\_LOGICOS\_190-2024.pdf](https://sede.agenciatributaria.gob.es/static_files/Sede/Disenyo_registro/DR_100_199/archivos_24/DISENOS_LOGICOS_190-2024.pdf) en la página 3 tiene que estar en la posición 58. No se te ocurra contar posiciones a mano, el [Notepad++](https://notepad-plus-plus.org/downloads/) lo hace por ti</p>

- **<span style="color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255);">REGISTRO TIPO 1 línea de código 21</span></span>**
    - <span style="color: rgb(35, 111, 161);">*S*<span style="color: rgb(0, 0, 0);">i eres de **otro centro de profesorado**, cambia lo</span></span><span style="color: rgb(35, 111, 161); background-color: rgb(194, 224, 244);"> *azul*</span>
        - <span style="color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255);">El cif <span style="background-color: rgb(194, 224, 244);">Q4400401H</span></span></span>
        - <span style="color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255);">El teléfono <span style="background-color: rgb(194, 224, 244);">638855010 </span>la T no lo cambies, significa presentación Telemática</span></span>
        - <span style="color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255);">Mi nombre apellidos y mi email</span></span>
    - <span style="color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255);">Cambia **cada año**  lo marcado en negrita en **<span style="color: rgb(224, 62, 45);">rojo</span>**</span></span>
        - <span style="color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255);">Posición 5-8 Numérico EJERCICIO o sea el año.</span></span>
        - <span style="color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255);">Posición 136-144 Numérico NÚMERO TOTAL DE PERCEPCIONES. en este caso son <span style="color: rgb(224, 62, 45);">180</span></span></span>
        - <span style="color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255);">Posición 145-160 Alfanumérico IMPORTE TOTAL DE LAS PERCEPCIONES. en este caso son <span style="color: rgb(224, 62, 45);">324751,26 </span>sin coma y 2decimales</span></span>
        - <span style="color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255);">Posición 161-175 Numérico IMPORTE TOTAL DE LAS RETENCIONES en este caso son <span style="color: rgb(224, 62, 45);">48712,68</span> sin coma y 2decimales</span></span>
    - <span style="color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255);">*1190**<span style="color: rgb(224, 62, 45);">2024</span>**<span style="color: rgb(35, 111, 161); background-color: rgb(194, 224, 244);">Q4400401HCATEDU</span> T<span style="color: rgb(35, 111, 161); background-color: rgb(194, 224, 244);">638855010QUINTANA PEIRO JOSE JAVIER</span> 1900000000002 0000000000000000000<span style="color: rgb(224, 62, 45);">**180**</span> 0000000**<span style="color: rgb(224, 62, 45);">32475126</span>**00000000<span style="color: rgb(224, 62, 45);">**4871268**</span><span style="background-color: rgb(194, 224, 244); color: rgb(35, 111, 161);">DIRECCION@CATEDU.ES</span>*</span></span>
    - <span style="color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255);">*Nota: He puesto como número identificativo el número 2, puede ser otro número <span style="background-color: rgb(255, 255, 255);">190000000000**<span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">2</span> </span>**</span>*<span style="background-color: rgb(255, 255, 255);"><span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">no pasa nada que lo chafa si lo entregas en la opción *Modelo 190 Ejercicio 20xx Presentación (hasta 40.000 registros)* ver figura más abajo, no lo chafa si lo presentas con la opción *Modelo 190 Ejercicio 20xx Presentación mediante fichero* (no recomendable)</span></span></span></span></span>
- **<span style="color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255);"> REGISTRO TIPO 2 línea de código 32</span></span>**
    - <span style="color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255);">EL AÑO EN EL SCRIPT *linea = "2190<span style="color: rgb(224, 62, 45);">**2024**</span><span style="color: rgb(35, 111, 161); background-color: rgb(194, 224, 244);">Q4400401H</span>"* </span></span>

##### <span style="color: rgb(22, 145, 121);">**<span style="background-color: rgb(255, 255, 255);">*CODIGO ACTUALIZADO AL [Formato para 2025](https://sede.agenciatributaria.gob.es/static_files/Sede/Disenyo_registro/DR_100_199/archivos_25/DISENOS_LOGICOS_190_2025.pdf)*</span>**</span>

```vb.net
Sub GenerarFichero190()
    Dim ruta As String
    Dim archivo As Integer
    Dim ultimaFila As Long
    Dim linea As String
    Dim i As Long
    
    ' Ruta y nombre del archivo de salida
    ruta = Application.DefaultFilePath & "\modelo_190.txt" ' Puedes personalizar la ruta
    archivo = FreeFile
    
    ' Abrir archivo para escritura
    Open ruta For Output As archivo
    
    ' Determinar la última fila con datos
    ultimaFila = Cells(Rows.Count, 1).End(xlUp).Row

    '####### Poner registro tipo 1  ##############################################################
    ' IMPORTANTE CAMBIAR 2024 EL AÑO, CAMBIAR 180 NUMERO PERCEPTORES, CAMBIAR 32451260 SUMA PERCEPTORES Y CAMBIAR 4871268 SUMA RETENCIONES

    linea = "11902024Q4400401HCATEDU                                  T638855010QUINTANA PEIRO JOSE JAVIER              1900000000002  0000000000000000000180 000000032475126000000004871268DIRECCION@CATEDU.ES                                                                                                                                                                                                                                                                                                                  "
    ' Escribir la línea al archivo
    Print #archivo, linea

    '####### Poner registros tipo 2 ##############################################################
    
    ' Recorrer las filas y construir el archivo
    For i = 2 To ultimaFila                                              ' Asume que la fila 1 tiene encabezados
                                                                         '1  Numérico  TIPO DE REGISTRO.
                                                                         '2-4  Numérico  MODELO DECLARACIÓN.
                                                                         '5-8  Numérico  EJERCICIO.
        linea = "21902024Q4400401H"                                      '9-17  Alfanumérico  NIF DEL DECLARANTE.
        linea = linea & Cells(i, 1).Value                                '18-26  Alfanumérico  NIF DEL PERCEPTOR.  (columna A)
        linea = linea & "         "                                      '27-35  Alfanumérico  NIF DEL REPRESENTANTE LEGAL.
        linea = linea & Left(Cells(i, 2).Value & Space(40), 40)          '36-75  Alfanumérico APELLIDOS  Y  NOMBRE (COLUMNA B)
        linea = linea & Format(Cells(i, 3).Value, "00")                  '76-77  Numérico  CÓDIGO PROVINCIA.(COLUMNA C)
        linea = linea & Format(Cells(i, 4).Value, "0")                   ' 78  Alfabético  CLAVE DE PERCEPCIÓN. (columna D)
                                                                         '79-80  Numérico  SUBCLAVE.
        linea = linea & Format(Cells(i, 5).Value * 100, " 0000000000000")  '81-107  Alfanumérico PERCEPCIONES DINERARIAS (columna E)
                                                                                '81 SIGNO DE LA PERCEPCIÓN ÍNTEGRA en cualquierotro caso el contenido de este campo será un espacio.
                                                                                '82-92  Parte  entera  del  importe
                                                                                '93-94  Parte  decimal  del  importe
        linea = linea & Format(Cells(i, 6).Value * 100, "0000000000000")    '95-107  RETENCIONES  PRACTICADAS (columna F)
                                                                                'Campo numérico  de  13  posiciones.  Se  consignará,  sin
                                                                                'signo  y  sin  coma  decimal,  el  importe  anual efectivamente  retenido  a  cuenta  del  IRPF
                                                                                'relación  con  las  percepciones  dinerarias consignadas  en  el  campo  anterior,
        linea = linea & " 000000000000000000000000000000000000000"       '108-147  Alfanumérico PERCEPCIONES  EN  ESPECIE 135-145 Parte entera  si  no ceros.
                                                                                   '108 SIGNO DE LA PERCEPCIÓN EN ESPECIE:  en cualquier otro caso el contenido de este campo será un espacio.
                                                                                   '146-147 Parte decimal del importe de los ingresos,  si  no ceros
        linea = linea & "0000"                                           '148-151  Numérico  EJERCICIO DEVENGO. En cualquier otro caso Se  rellenara a ceros (0).
        linea = linea & "0"                                              '152  Numérico  CEUTA O MELILLA. En  otro  caso número cero (0).
                                                                         '153-254  DATOS  ADICIONALES  (solo  en  las  claves  y subclaves  A,  B  -subclaves  01  y  03-,  C,  E,  F  - subclaves 01 a 06-, G -subclaves 01 a 06 y 08-, H, I,  y L -subclaves 05, 10, 27 y 29-).
        linea = linea & "0000"                                                   '153-156  Numérico  AÑO DE NACIMIENTO.
        linea = linea & "0"                                                      '157  Numérico  SITUACIÓN FAMILIAR.3. Si la situación familiar del perceptor es distinta de  las  anteriores
        linea = linea & "         "                                              '158-166  Alfanumérico NIF DEL CÓNYUGE / NIF DEL TITULAR DE LA UNIDAD DE CONVIVENCIA. En cualquier otro caso este campo se  rellenará a espacios.
        linea = linea & "0"                                                      '167  Numérico  DISCAPACIDAD.  0. Si el perceptor no padece ninguna discapacidad
        linea = linea & "0"                                                      '168  Numérico  CONTRATO O RELACIÓN Solo  para  percepciones  correspondientes  a  la clave A.
        linea = linea & "0"                                                      '169  Numérico  TITULAR UNIDAD DE CONVIVENCIA
        linea = linea & "0"                                                      '170  Numérico  MOVILIDAD GEOGRÁFICA. Solo  para  percepciones  correspondientes  a  la clave A
        linea = linea & "00000000000000000"                                           '171-183  Numérico  REDUCCIONES APLICABLES.
        linea = linea & "000000000000000"                                             '184-196  Numérico  GASTOS DEDUCIBLES.
        linea = linea & "00000000000000000"                                           '197-209  Numérico  PENSIONES COMPENSATORIAS.
        linea = linea & "00000000000000"                                           '210-222  Numérico  ANUALIDADES POR ALIMENTOS.
        linea = linea & "0000"                                                   '223-228  Numérico  HIJOS Y OTROS DESCENDIENTES.
        linea = linea & "0000"                                                   '229-240  Numérico HIJOS  Y  OTROS  DESCENDIENTES  CON DISCAPACIDAD.
        linea = linea & "0000"                                                   '241-244  Numérico  ASCENDIENTES.
        linea = linea & "0000"                                                   '245-250  Numérico  ASCENDIENTES CON DISCAPACIDAD.
        linea = linea & "0000"                                                   '251-253  Numérico  CÓMPUTO DE LOS 3 PRIMEROS HIJOS.
        linea = linea & "0"                                                      '254  Numérico COMUNICACIÓN  PRÉSTAMOS  VIVIENDA HABITUAL.0: Si en ningún momento del ejercicio ha resultado de aplicación la reducción del tipo de retención.
                                                                         '255-281  Alfanumérico PERCEPCIONES  DINERARIAS  DERIVADAS  DE INCAPACIDAD LABORAL sino ceros
        linea = linea & " "                                                '255 En este caso se consignará una «N», en cualquier otro  caso  el  contenido  de  este  campo  será  un espacio.
        linea = linea & "00000000000000000000000000"                       '256-268  PERCEPCIÓN  ÍNTEGRA  (Dineraria)DERIVADA DE INCAPACIDAD LABORAL
                                                                         '282-321  Alfanumérico PERCEPCIONES  EN  ESPECIE  DERIVADAS  DE INCAPACIDAD LABORAL:
        linea = linea & " "                                                 '282 En este caso se consignará una «N», en cualquier otro  caso  el  contenido  de  este  campo  será  un espacio.
        linea = linea & "0000000000000"                                     '283-295  PERCEPCIÓN  ÍNTEGRA  (Dineraria)DERIVADA DE INCAPACIDAD LABORAL
        linea = linea & "0000000000000"                                     '296-308  INGRESOS  A  CUENTA  EFECTUADOS POR PRESTACIONES EN ESPECIE DERIVADAS DE  INCAPACIDAD  LABORAL:
        linea = linea & "0000000000000"                                     '309-321  INGRESOS  A  CUENTA REPERCUTIDOS  POR  PRESTACIONES  EN ESPECIE  DERIVADAS  DE  INCAPACIDAD LABORAL:
        linea = linea & "0"                                              '322  Numérico  COMPLEMENTO AYUDA PARA LA INFANCIA
        linea = linea & "00000000000000000000000000000000000000000000000000000000000000000"                                  '323-387  NuméricoRETENCIONES  E  INGRESOS  A  CUENTAINGRESADOS  EN  EL  ESTADO,  EN  LASDIPUTACIONES FORALES DEL PAIS VASCO YEN LA COMUNIDAD FORAL DE NAVARRA
        linea = linea & "0"                                              '388  Numérico EXCESOS  ENTREGA  ACCIONES  EMPRESAS EMERGENTES
        linea = linea & "0"                                              '389  NOVEDAD 25 Numérico RENDIMIENTOS DEL TRABAJO OBTENIDOS POR LA GESTIÓN DE FONDOS VINCULADOS AL EMPRENDIMIENTO
        linea = linea & "00000"                                          '390-394  Numérico TIPO/S DE PRESTACIÓN/ES DE LA CLAVE B.01 PERCIBIDA/S EN EL EJERCICIO  EMPRESAS EMERGENTES
        linea = linea & Space(105)                                        '395-500  –AÑADO 105 ESPACIOS.
        linea = linea & " "                                               ' he puesto un espacio en blanco tiene que coincidir en la 500
        ' Escribir la línea al archivo
        Print #archivo, linea
    Next i
    
    ' Cerrar el archivo
    Close archivo
    
    ' Mensaje de confirmación
    MsgBox "Archivo generado correctamente en: " & ruta, vbInformation
End Sub

```

1. Ejecuta la macro seleccionando GenerarModelo190, y haciendo clic en Ejecutar. o en el botón del play de arriba
2. El archivo se guarda automáticamente en Mis Documentos como modelo\_190.txt

[![2025-01-21 14_07_09-Documentos - Explorador de archivos.png](https://libros.catedu.es/uploads/images/gallery/2025-01/scaled-1680-/2025-01-21-14-07-09-documentos-explorador-de-archivos.png)](https://libros.catedu.es/uploads/images/gallery/2025-01/2025-01-21-14-07-09-documentos-explorador-de-archivos.png)

El archivo **se tiene que editar/ver con [Notepad++](https://notepad-plus-plus.org/)**

**[![2026-01-05 22_42_47-C__Users_HP_Documents_modelo_190.txt - Notepad++.png](https://libros.catedu.es/uploads/images/gallery/2026-01/scaled-1680-/2026-01-05-22-42-47-c-users-hp-documents-modelo-190-txt-notepad.png)](https://libros.catedu.es/uploads/images/gallery/2026-01/2026-01-05-22-42-47-c-users-hp-documents-modelo-190-txt-notepad.png)**

Vas a la Agencia Tributaria a esta ruta

[![2025-01-21 20_10_58-Agencia Tributaria_ Modelo 190. Declaración Informativa. Retenciones e ingresos .png](https://libros.catedu.es/uploads/images/gallery/2025-01/scaled-1680-/2025-01-21-20-10-58-agencia-tributaria-modelo-190-declaracion-informativa-retenciones-e-ingresos.png)](https://libros.catedu.es/uploads/images/gallery/2025-01/2025-01-21-20-10-58-agencia-tributaria-modelo-190-declaracion-informativa-retenciones-e-ingresos.png)

<p class="callout info">La razón por la que no se aconseja "Modelo 190 Ejercicio XXX Presentación mediante fichero es que **no se ve** lo importado, firmas a ciegas</p>

1. Creas un nuevo modelo de 190
2. Entra con tu certificado electrónico de CIF Q4400401H

<p class="callout danger">**OJO, esto importa los datos creados. Es tu responsabilidad de REVISAR que los datos importados son correctos, antes de firmar y enviar**</p>

Vas a Importar

[![2026-01-05 21_17_59-Greenshot.png](https://libros.catedu.es/uploads/images/gallery/2026-01/scaled-1680-/2026-01-05-21-17-59-greenshot.png)](https://libros.catedu.es/uploads/images/gallery/2026-01/2026-01-05-21-17-59-greenshot.png)

O también Continuar y entonces darle a este botón

[![2025-01-21 20_07_44-Modelo 190.png](https://libros.catedu.es/uploads/images/gallery/2025-01/scaled-1680-/2025-01-21-20-07-44-modelo-190.png)](https://libros.catedu.es/uploads/images/gallery/2025-01/2025-01-21-20-07-44-modelo-190.png)

**Y SALE IGUAL QUE SI LO HUBIERAS TECLEADO A MANO** vas pasando por todos los registros y ver revisando si lo ha hecho bien, ver los errores en la ventana de errores, etc..

<p class="callout warning">REVISA TODO, VES LOS ERRORES, ETC....</p>

<p class="callout success"> SI LO VES TODO CORRECTO **FIRMAR Y ENVIAR** Y YA ESTA</p>