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í.
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.
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
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).
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
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.
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 €"})
Muchas gracias por compartir, Juan Manuel.
Buenas gracias por tus aportes Juan Manuel. Esta formula no convierte millones, tienes alguna programacion para millones.
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)
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.
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.
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
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.
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.
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 })
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.
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.
Hola Julio,
Al revés no se puede verdad? Es decir, número en letras pasarlas a número.
Supongo que pido mucho. Gracias.
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.
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.
Muchas gracias, Francisco, por seguir y compartir, con tus contactos, mis canales y por tus amable palabras:
Prueba añadiendo: \# "##,00 'm'"
buenos dias, como hago caudno este el numero automaticamente coloque las letras, sin darle control f9 y luego f9
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.