Convertir números en letras en Word.

Son muchas las ocasiones en las que queramos o tengamos que convertir números en letras. En la entrada anterior comentaba una de ellas, los números de página.

Otro caso muy común, en ambientes legales, en los que documentos como los contratos, deben añadir a las cantidades en número su conversión en letras.

Aunque el procedimiento es el mismo, hay alguna variante que mostraré aquí.

Convertir números en letras. Muestra los códigos y el resultado de aplicar modificadores de número.
Aquí he puesto dos variantes en el número. Para la parte entera uso un marcador, al que he llamado Número, y para la parte decimal escribo el número directamente.
También uso el modificador lower para poner los decimales en minúscula.

Para finalizar, añadir que el límite para este modificador de campo es el número 999999.

Espero que te guste, sea útil y tus comentarios y sugerencias para nuevos temas. Sigue el blog y compártelo con tus contactos.

También puedes visitar el Curso avanzado de Word en mi canal de YouTube.

Esta entrada tiene 22 comentarios

  1. Eduardo Sánchez Romero

    Por fin encontré lo que buscaba pero me falta algo!
    Porfavor me orienta que debo hace para convertir a letras y en mayúsculas?
    Mil gracias

    1. Pepe Martínez

      Gracias Eduardo:
      En esta entrada tengo unos cuantos modificadores pero me faltan, ya lo he anotado, los de capitalización, que dicen los anglosajones.
      Te los adelanto, son cuatro: Caps (pone en mayúscula la primera letra de cada palabra), Firstcap (la primera de cada oración), lower (todo en minúscula) y, por la que preguntas, upper (todo en mayúsculas).

  2. ernesto

    la otra vez note que al menos al poner los numeros del 23000 al 26000 los imprime asi 'Veintiséismil' cosa incorrecta pues deberia ser "Veintiséis mil" ¿tienes alguna hipotesis de porque? y si hay forma de arreglarlo

    1. Pepe Martínez

      Muy interesante, Ernesto.
      Acabo de hacer la prueba y observo que los números con tilde no los separa. He mirado en la RAE pero no encuentro esta posible regla o excepción.
      Muchas gracias. Si te enteras de esta posible excepción, lo comunicas. Si no, lo haré saber a la gente de Microsoft.

  3. Juan Manuel Cuesta Lopez

    Convierte la cantidad 6.123,45 en el formato SEIS MIL CIENTO VEINTITRÉS EUROS Y CUARENTA Y CINCO CENTIMOS (6.123,45 €)
    Se asigna la cantidad a convertir a la variable Importe o bien se pone directamente la cantidad en el comando SET

    {set aa {=Importe}} {set bb {=aa*100-int(aa)*100}}{=int(aa)\*cardtext \*upper} EUROS{if bb = 0 "" {ref bb\*cardtext \*upper}}{if bb = 0 "" " CENTIMOS"} ({ref aa\# #.##0,00 €"})

    o bien

    {set aa {=6123,45}} {set bb {=aa*100-int(aa)*100}}{=int(aa)\*cardtext \*upper} EUROS{if bb = 0 "" {ref bb\*cardtext \*upper}}{if bb = 0 "" " CENTIMOS"} ({ref aa\# #.##0,00 €"})

    o tambien lo puedes preguntar al usuario:

    { SET aa { FILLIN "Escriba el número a convertir:" } }{set bb {=aa*100-int(aa)*100}}{=int(aa)\*cardtext \*upper} EUROS{if bb = 0 "" {ref bb\*cardtext \*upper}}{if bb = 0 "" " CENTIMOS"} ({ref aa\# #.##0,00 €"})

    1. Pepe Martínez

      Muchas gracias por compartir, Juan Manuel.

    2. Sandy

      Buenas gracias por tus aportes Juan Manuel. Esta formula no convierte millones, tienes alguna programacion para millones.

      1. Pepe Martínez

        Muchas gracias, Sandy, por seguir y compartir, con tus contactos, mis canales:
        Aquí tienes, debe estar el punto de inserción dentro del número y este no debe tener signos de dólar, euro ni de ningún tipo:
        Sub BigCardText()
        Dim sDigits As String
        Dim sBigStuff As String

        sBigStuff = ""

        ' Select the full number in which the insertion point is located
        Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdMove
        Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend

        ' Store the digits in a variable
        sDigits = Trim(Selection.Text)

        If Val(sDigits) > 999999 Then
        If Val(sDigits)

  4. Jose María Gómez

    Buenas tardes Juan Manuel, he metido la cadena de comandos que has puesto y no tengo forma que me convierta una cantidad con decimales, en letras. Serias tan amble de darte algo más de información.

    Un saludo.

    1. Pepe Martínez

      Hola José María:
      Muchas gracias por usar mi blog y por tus comentarios. Debes fijarte detalladamente en el campo. Cuidado con los espacios en blanco. Te voy a enviar un ejemplo a tu correo, para que lo veas. Cualquer duda me comentas.
      Gracias, de nuevo, y espero seguir contando con tu seguimiento.

  5. Javier Reyes

    Buenos días profesor

    Tengo un problema a la hora de fijar una fecha.

    Es un contrato de arrendamiento de 6 meses y la fecha actual se actualiza automáticamente y quiero que la cláusula del periodo de arrendamiento de cree a 6 meses vista respecto a la fecha actual de manera automática, ya que la fecha de firma del contrato varia, pero la duración no, en este caso 6 meses siempre respecto a la fecha actual

    Gracias
    Un saludo

    1. Pepe Martínez

      Hola, de nuevo Javier:
      El cálculo de fechas futuras, por su naturaleza, meses con diferentes días, años bisiestos, es muy complicado en Word. Se puede hacer, pero implicaría el uso de más de treinta campos anidados, para cubrir todas las posibles variantes, o el de macros, igualmente complejas.
      Muchas gracias, espero seguir contando con tu seguimiento y, siempre pertinentes, comentarios.

  6. Javier Ramirez Gabriel

    Profesor muy buenos dias ante todo felicitarle por este trabajo y compartirlo tan samaritanamente, mi consulta es la siguiente soy estudiante de derecho, y la fiscalia a dispuesto que para recepcionar algun tipo de documento este tiene que ser foliado en letra y número, usted podria indicarme como puedo hacer esto en word... por ejemplo en la paginas tienen que salir asi : 1 (uno) 2 (dos) y asi sucesivamente agradezco de ante mano su respuesta.

    1. Pepe Martínez

      Muchas gracias Javier, por seguir y compartir el blog y mi canal de YouTube.
      En la entrada y la anterior, enlazada, tienes los elementos para hacer lo que pide la fiscalía. Debes escribir estos campos:{ page } ({ page \* cardtext \* lower })

  7. Eduardo

    Me pueden ayudar por favor?, he metido la cadena para convertir la cantidad a letra conforme a la primer propuesta de Juan Manuel y solo convierte hasta EUROS".. de ahi no pone nada más, y otra duda, como hago que lo escriba en español?.

    Les agradezco de antemano!, quedo al pendiente.
    Saludos, Eduardo B.

    1. Pepe Martínez

      Muchas gracias, Eduardo, por seguir y compartir mis canales:
      Hazlo como cuento en la entrada. El idioma es el del sistema o, si tienes varios, el del documento.
      Puedes enviarme alguna prueba al correo y lo vemos.

  8. Alberto

    Hola Julio,
    Al revés no se puede verdad? Es decir, número en letras pasarlas a número.

    Supongo que pido mucho. Gracias.

    1. Pepe Martínez

      Muchas gracias, Alberto, por seguir y compartir, con tus contactos, mis canales:
      No, todavía no, o, al menos, hasta donde yo sé. Supongo que no se tardará mucho, pero... Lo más que se puede hacer, en Excel, es convertir números almacenados como letras en números.
      Por cierto, no es importante ni me molesta, pero ¿Julio? Soy Pepe.

  9. Francisco

    Buenas tardes, primero gracias por el blog porque para los que estamos empezando nos viene muy bien. Segundo, aunque no es el post más adecuado le escribía por si me puede ayudar con el tema de los campos. He conseguido que al combinar correspondencia, en un campo aparezcan dos decimales con {MERGEFIELD nombre_campo \##,00\* MERGEFORMAT} pero me gustaría que también apareciera una m después pero no lo consigo. En resumen, de Excel me llega un número con muchos decimales (aunque lo tenga limitado a dos). En Word, al campo le doy formato de dos decimales pero me gustaría que justo después apareciera m.

    1. Pepe Martínez

      Muchas gracias, Francisco, por seguir y compartir, con tus contactos, mis canales y por tus amable palabras:
      Prueba añadiendo: \# "##,00 'm'"

  10. Marco Rodriguez

    buenos dias, como hago caudno este el numero automaticamente coloque las letras, sin darle control f9 y luego f9

    1. Pepe Martínez

      Muchas gracias, Marco, por seguir y compartir, con tus contactos, mis canales: No termino de entender tu problema. Mira más entradas sobre Campos y, si no lo solucionas, manda un ejemplo a mi correo, que está aquí en el menú de la derecha.

Deja una respuesta