HACIENDA MOD 190: De hoja excel a fichero 190.txt Importación a MOD 190 ¿Qué es el fichero 190.txt? 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 Formato para 2024  Formato para 2025 cambia posiciones 389 a 395 registro tipo 2 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 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/ En esas instrucciones hay  dos tipos de registros de 500 carácteres TIPO 1 sólo uno con los datos del declarante. TIPO 2 con los datos de cada preceptor. Un registro por cada uno. Empezamos del fichero Excell Abre el fichero Excel  190-xx-conscript .xlsm  que hemos conseguido anteriormente  IMPORTANTE tiene que tener ese mismo orden Una vez que lo tienes haces lo siguiente Abre el archivo Excel. Presiona Alt + F11 para abrir el editor de VBA. En el editor, haz clic en Insertar > Módulo. Copia y pega el siguiente código: ATENCIÓN, CAMBIA LO SIGUIENTE PERO SIN QUITAR Y PONER CARÁCTERES 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 en la página 3 tiene que estar en la posición 58. No se te ocurra contar posiciones a mano, el Notepad++ lo hace por ti REGISTRO TIPO 1 línea de código 21 S i eres de otro centro de profesorado , cambia lo azul El cif Q4400401H El teléfono 638855010 la T no lo cambies, significa presentación Telemática Mi nombre apellidos y mi email Cambia cada año  lo marcado en negrita en rojo Posición 5-8 Numérico EJERCICIO o sea el año. Posición 136-144 Numérico NÚMERO TOTAL DE PERCEPCIONES. en este caso son 180 Posición 145-160 Alfanumérico IMPORTE TOTAL DE LAS PERCEPCIONES. en este caso son 324751,26 sin coma y 2decimales Posición 161-175 Numérico IMPORTE TOTAL DE LAS RETENCIONES en este caso son 48712,68 sin coma y 2decimales 1190 2024 Q4400401HCATEDU                                  T 638855010QUINTANA PEIRO JOSE JAVIER              1900000000002  0000000000000000000 180 0000000 32475126 00000000 4871268 DIRECCION@CATEDU.ES Nota: He puesto como número identificativo el número 2, puede ser otro número  190000000000 2 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)  REGISTRO TIPO 2 línea de código 32 EL AÑO EN EL SCRIPT  linea = "2190 2024 Q4400401H " CODIGO ACTUALIZADO AL Formato para 2025 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 Ejecuta la macro seleccionando GenerarModelo190, y haciendo clic en Ejecutar. o en el botón del play de arriba El archivo se guarda automáticamente en Mis Documentos como modelo_190.txt El archivo  se tiene que editar/ver con Notepad++   Vas a la Agencia Tributaria a esta ruta 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 Creas un nuevo modelo de 190 Entra con tu certificado electrónico de CIF Q4400401H OJO, esto importa los datos creados. Es tu responsabilidad  de REVISAR que los datos importados son correctos, antes de firmar y enviar Vas a Importar O también Continuar y entonces darle a este botón 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.. REVISA TODO, VES LOS ERRORES, ETC....  SI LO VES TODO CORRECTO FIRMAR Y ENVIAR Y YA ESTA