En la red se puede encontrar muchos de estos “codigos”, algunos permiten manejar varias monedas, dólares, Euros etc. Uno de los más usados y mas que excelente es el de Mauricio Baeza, ¡100% hecho en México!, desde entonces han surgido muchas variantes y modificaciones; pero muy pocos sitios o casi nunguno muestran como usarlos.
Vamos a empezar, primero necesitamos el código, vamos a usar este que al parecer el autor es Saúl López con una pequeña modificación de ByPaco para que aparezca Pesos y M.N., haciendo una pequeña modificación al código para que aparezca “SON:” como se usa aquí en México.
Function PesosMN(tyCantidad As Currency) As String
Dim lyCantidad As Currency, lyCentavos As Currency, lnDigito As Byte, lnPrimerDigito As Byte, lnSegundoDigito As Byte, lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte, lnBloqueCero
Dim laUnidades As Variant, laDecenas As Variant, laCentenas As Variant, I As Variant 'Si esta como Option Explicit
tyCantidad = Round(tyCantidad, 2)
lyCantidad = Int(tyCantidad)
lyCentavos = (tyCantidad - lyCantidad) * 100
laUnidades = Array("UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE", "VEINTE", "VEINTIUN", "VEINTIDOS", "VEINTITRES", "VEINTICUATRO", "VEINTICINCO", "VEINTISEIS", "VEINTISIETE", "VEINTIOCHO", "VEINTINUEVE")
laDecenas = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")
laCentenas = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")
lnNumeroBloques = 1
Do
lnPrimerDigito = 0
lnSegundoDigito = 0
lnTercerDigito = 0
lcBloque = ""
lnBloqueCero = 0
For I = 1 To 3
lnDigito = lyCantidad Mod 10
If lnDigito <> 0 Then
Select Case I
Case 1
lcBloque = " " & laUnidades(lnDigito - 1)
lnPrimerDigito = lnDigito
Case 2
If lnDigito <= 2 Then
lcBloque = " " & laUnidades((lnDigito * 10) + lnPrimerDigito - 1)
Else
lcBloque = " " & laDecenas(lnDigito - 1) & IIf(lnPrimerDigito <> 0, " Y", Null) & lcBloque
End If
lnSegundoDigito = lnDigito
Case 3
lcBloque = " " & IIf(lnDigito = 1 And lnPrimerDigito = 0 And lnSegundoDigito = 0, "CIEN", laCentenas(lnDigito - 1)) & lcBloque
lnTercerDigito = lnDigito
End Select
Else
lnBloqueCero = lnBloqueCero + 1
End If
lyCantidad = Int(lyCantidad / 10)
If lyCantidad = 0 Then
Exit For
End If
Next I
Select Case lnNumeroBloques
Case 1
PesosMN = lcBloque
Case 2
PesosMN = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL") & PesosMN
Case 3
PesosMN = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, " MILLON", " MILLONES") & PesosMN
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
PesosMN = "SON: (" & PesosMN & IIf(tyCantidad > 1, " PESOS ", " PESO ") & Format(Str(lyCentavos), "00") & "/100 M.N.)"
End Function
Bien, ahora que ya tenemos el código vamos a insertarlo en nuestra hoja de trabajo de Microsoft Excel. Recomendable trabajar en un libro nuevo.
Hacemos clic en Herramientas->Macros->Editor de Visual Basic, o simplemente presionando Alt+F11

Es importante que cierres todos los libros que tengas abierto y dejes abierto solo el libro en el que estas trabajando ya que podría dificultarte encontrar tu libro en el explorador de proyectos (lado izquierdo de tu pantalla, si no lo ves presiona Ctrl+R)
Una vez abierto el editor de Visual Basic nos vamos a Insertar->Modulo

En la ventana que se abre pegamos el codigo de la macro


Listo, ya tenemos nuestro macro listo para trabajar, cerramos el editor de Visual Basic, lo puedes hacer con Alt+Q y regresamos a Microsoft Excel
Vamos a probarlo, en la celda A1 ponemos un importe, yo pondré 1500.21, abajo, en la celda A2 ponemos =PesosMN(A1)

Bien, si pudiste hacer el ejercio hasta aquí, ya puedes ponerlo en todos tus libros de trabajo, buena suerte.
via: Gonzalo Conta
Tengo una duda, sabes como sumar en una columna letras, es decir, si tienes
A B M
A A A B B B M M A A B = 5 4 2
Gracias
La verdad no lo se, puse este articulo porque me pareció interesante la idea de que la gente descubriera como pasar cantidades a letras en excel, ya que habemos muchos que lo utilizamos a diario, si quieres pueder dirigirte a: http://gchable.wordpress.com/2007/10/14/4/#more-4
que fue donde saque este articulo, lo publiqué tal cual porque era perfecto. al final puedes ver que esta el enlance a su blog. Espero te sirva
Muchas gracias por esta gran ayuda para convertir numeros a texto en excel, esta genial, y me funciona bien, tenia una parecida a esta pero en la cuestion de los decimales tiene un pequeño error, ya que no los escribe tal y como son no se a donde te la pueda enviar para ver si tu puedes corregirle el error y se pudiera publicar tambien, funciona bien solo cuando son cantidades mayores o son cero centavos o fracciones de centavos no lo hace bien.
Gracias
muy bueno, felicidades…..
Hola, a ver si me pueden ayudar, me intereso mucho el programa y es de gran ayuda. Solo que cuando guardo el docto. al abrirlo ya no me respeta la formula.
hace algun tiempo me pasaron un programilla, como complemento de excel que solo lo ejecutas y automaticamente puedes convertir numeros a texto. solo que perdi el archivo cuando actualizaron mi computadora, realmente no logro realizarlo con los codigos que encuentro en internet. me gustaria si alguien tiene el programa que comente me lo envie porfavor………la verdad me urge…. grax………..
Excelente aporte, mil gracias…
Excelente herramienta para ahorrar tiempo y magnífica la explicación e ilustración de cómo usar visual basic para quienes no lo hemos usado. De grandísima utilidad!!
Compañero.. si va a copiar los escritos de alguien más justo es que ponga el crédito correspondiente dentro del articulo.
Compañero, por eso estoy indicando en el comentario no. 2 que lo obtuve de:
http://gchable.wordpress.com/2007/10/14/4/#more-4
y ademas en la parte final del articulo esta tambien indicado.
Agradesco tu comentario.
Ahhh tienes razón, no lo había visto y es que eso pasa cuando solamente se copia y pega sin preocuparse un poco de como se ve la nota en tu página.
Gracias tu explicación fue muy clara y ademas propisiste un ejemplo de principio a fin, como deberia ser. sigue adelante
muchas gracias por definir exactamente la programacion para convertir numeros a letras gracias
Este codigo esta perfecto y muy clara la explicacion FELICIDADES ! Como hago para que me funcione en cada hoja de excel que abra?
GRACIAS
Oye gracias por el tip, yo tenia uno pero ya no me queria sacar la cantidad en letra, y este me quedó de perlas.
MUCHAS GRACIAS POR SUBIR ESE ARTICULO ESTA MUY BIEN Y SOBRE TODO BIEN EXPLICADO DE COMO PODER BAJARLO E INCORPORARLO A EXCEL ME FUE DE MUCHA AYUDA GRACIAS
Muchas gracias fue muy util la información de crear macros para escribir las cantidades con letra
Me fue muy util, ademas explicado paso a paso, muy bueno, muchas gracias
Excelente articulo, solo una pregunta si escribo 1,000,000.00 la formula da un millon pesos 00/100 m.n.
como hago para que ponga la palabra “de”? antes de la palabra pesos.
GRACIAS
Muy buena pregunta, no esta configurado para poner “Millones de Pesos” ya que al agregarle esa funcion pondria en cantidades como 1,234,567.00 “1 millon de pesos doscientos treinta y cuatro mil quinientos secenta y siete pesos”, pero si eres afortunado para vender millones de pesos puedes mandar a hacer un sistema mas avanzado, no ya en serio habria que investigarle yo creo que si se pueda el codigo lo obtuve de este link: http://gchable.wordpress.com/2007/10/14/4/#more-4
ya que me parecio bastante util.
Gracias por tu comentario
Gracias Amigos, esta información me va a ser de mucha utilidad en el trabajo, q mantengan ese espiritu de ayuda.
Excelente aporte, mucho que me hacia falta..
Tengo una duda, por que no se puede guardar el archivo, cuando lo cierro y lo abro de nuevo el macro desaperece
hay que habilitar los Macros cada vez que lo abras.
Queria saber si alguien me puede ayudar a desbloquear proyectos en VBA ya que no recuerdo las contraseñas.
gracias
Desconozco del tema amigo.
BUENAS TARDE! ME FUE DE GRAN UTILIDAD SEGUI TODO EL PROCESO PARA HACER LA FORMULA PERO AL CERRAR EL ARCHIVO SE DESCONFIGURA, HABRA ALGUNA MANERA PARA EVITARLO ¡GRACIAS!
ES UNA EXCELENTE MACRO SUPER
Hola, tengo una duda, al salir de mi Hoja de calculo, el macro creado se borra, espero puedas ayudarme.
Utilizo Office 2007.
El macro me funciono perfectamente, el unico inconveniente es al momento de salir.
AYUDA, FUNCIONA PERO IGUAL A LA HORA DE CERRARLO Y VOLVERLO A ABRIR NO ME LO RESPETA, ALGUNA SOLUCION???
gracias si funciono
PERSONAS COMO TU ENGRANDECEN EL CONOCIMIENTO HUMANO, MUCHAS GRACIAS.
para MAX y CS Cabe destacar algo importante sobre el nivel de seguridad de Excel con respecto a las macros. Si usted guarda este código en el libro en el cual esté trabajando, la próxima vez que usted abra dicho libro Excel le advertirá que se han deshabilitado las macros de este libro debido al nivel de seguridad predeterminado, lo cual lo obligará a usted a cambiar el nivel de seguridad de las macros de Excel a un nivel bajo, para efectos de poder ejecutar dicha macro y volver a abrir el libro de nuevo para que la función sea funcional.
Para evitar esta situación es recomendable que usted guarde sus Módulos, funciones, Métodos, Macros y etc, en el libro de macros PERSONAL y llamar a la función de conversión de números a letras como se muestra anteriormente =PesosMN(A1)
Recordar que al momento que ves la ventana de macros te da la opción de MACROS EN.. aquí al desplegar la pestaña te dará la opciones de libros abiertos que se tengan, por defaul abrira el de PERSONAL y aquí se deberían de aguardar los cambios que se realizaran en los trabajos. AQUI TE EXPLICO…
Crea el Archivo PERSONAL.XLS. para empezar la extensión es por defaul la de Excel solo se tiene que aguardar con este nombre.
Solo cave el copiar la formula PARA CONVERTIR NUMKERO A TEXTO antes mostrada en un libro que sea nuevo, no importa que nombre te de al azar Excel, de ahí se abbre el editor de visual
>Herramientas >Macros >Editor de VB y dar Clic (Alt+F11)
Una vez estando en el editor solo pegar la formula y en ese momento decirle al editor VB GUARDAR COMO…
Seguir la ruta
> c:\Archivos de programa\ Microsoft Office\office11\XLSTART
aguardar con el nombre de PERSONAL.
por defaul te da XLS . CIERRA Y ABRE NUEVAMENTE EXCELy si esta visible la hoja con este nombre con la opcion del
menú > Ventana >Ocultar
te ocultara esta hoja que contiene esta formula. Ahora solo falta usar esta formula en cualquier hoja de Excel y Listo… recuerda solo esta oculta y lo puedes checar al abrir los macros… checalo alguna duda escribe Ce ollin
Les dejo este coneste para que lo chequen si tienen alguna duda aquui ya estan mas que explicadas, solo date tiempo para leer y si encontraras respuesta a muchas dudas, solo recuerda que no te maries con tantos prefijos, esta formula esta bastante bien para Mexico pero si eres de otro pais si dale una buena leida y te sacara de muchoa apuros … Cuidense Ce Ollin http://www.elcuaderno.co.cc/?p=41#comment-10912
Excelente!!!! Muy bueno, gracias a quien desarrollo esto. Muy util.
La verdad quede encantada, de la forma de como me lo esplecaron y son pocas las paguinas que se procupan por enseñar a uno hacer las cosas paso por paso y con imagenes.
gracias.
Super Exelente, quiero agradecer esta enorme aportacion porque probe infinidad de opciones y ninguna me funciono, tenia un compromiso con unas polizas de cheque y era demasiado trabajo me ahorre facil 2 dias de trabajo. Nuevamente “”gracias”"
Hola, es un exelente aporte, pero tengo una duda. En la maquina de la oficina donde trabajo, yo hago facturas y pongo la formula =PesosMN(), y si me funciona, pero a la hora de poner la formula en otra hoja del mismo libro, o en otro libro no aparece el resultado, sino que aparece la formula, tal como la escribi, por ejemplo, en lugar de “diez pesos 00/100 MN” aparece “=PesosMN(J11)”. ¿cómo puedo arreglar esto? gracias
Gracias mi amigo, funcionó perfectamente!!! un duda: Hay algo parecido para Mac?, es que los archivo en PC que tengan macros, en el office 2008 de mac no funciona, saludos y muchas gracias
Muchas gracias por tu aportacion,me parece que todo esta dicho en los agradecimientos de mis demas compañeros de busqueda. Por mi parte yo tengo una Microempresa y contratar diseñadores o comprar software en mas de una ocasión es prohibitido pero gracias a personas como tu definitivamente mas tarde que temprano, lograremos ser mas competitivos. Muchas gracias,tienes un amigo aca en Hermosillo,Sonora.Mexico para cuando quieras venir.
Muchas gracias….al fin despues de tanto buscar encuentro la formula que necesitaba….
exelente…me sirvio ..exelente!!!
esta chingon gracias
EXCELENTE, BUSCABA TANTO ALGO ASI DESDE HACE UN BUEN DE TIEMPO, EN VERDAD EXCELENTE!!!!!!! FELICIDADES
Disculpen la molestia, estoy tratando e usar esta macro, pero me encontre con un inconveniente cuando, cuando anote el número 1000000 me aparece el texto como “SON: ( UN MILLON PESOS 00/100 M.N.) falta “DE” para completar bien la oración, espero puedan alludarme con eso.
De antemano les agradesco mucho su amable atención
saludos
un millon pesos
hola! me podrias ayudar con esta tarea que me dejaron de traducir letras a numeros:
trecientos veinte millones cuarenta y dos mil uno=
dos billones, cuarenta mil millones tres=
te lo voy a agradeser…
Ese si esta bueno, no se como se pueda hacer eso, alguna idea o enlance?
Esta excelente la funcion, solo que cuando quiero utilizar esta funcion en otro archivo de excel, no me lo permite y tengo que hacer todo el procedimiento de nuevo para cada archivo. ¿Existira alguna manera de que la pueda ejecutar en cualquier archivo?
Esta muy bueno el código, gracias.
me encanto este codigo perfecto y facil de modificar
Muy bueno y muy facil de aplicar.. mil gracias…..
Excelente contribución. Ya había probado varios tutoriales y este es el unico que sirve perfecto.
Muchisimas Gracias!!!
Mil gracias!!!! esta perfecto
se agradece mucho una contribucion como esta. me sirvio muy bien. saludos cordiales
Excelente aporte, gracias me saco de un apuro.
Muchas gracias por el aporte, la verdad es que si me ahorro mucho trabajo, aparte de cometer errores. Mil gracias
NO TENGO PALABRAS PARA AGRADECER A “MAURICIO BAEZA”, “SAUL LOPEZ”, “MARIO OLIN” POR COMPARTIR CONOCIMIETNOS DIOS LOS BENDECIRA UN MONTON…. :0)
Sr. es Ud. lo máximo, gracias por compartir su conocimiento,es Ud. atododar mil gracias
Excelente, le hice unos pequeños ajustes para la aplicación de la moneda en Chile, quedo perfecto.
muchas gracias me sirvo bastante espero que todos fueran asi como tu amigo gracias
muy buena herramienta, me saco de apuros.
gracias señores
Me gustó, andaba buscando la mejor de estas sintáxis, aunque menos de un peso no lo hacia bien, ya lo corregí, y para evitar lo de un millon (1,000,000.00) lo coloqué dentro de una función SI, con eso quedó perfecto!! ahora si jala de maravilla, felicidades por su colaboracion.
Function PesosMN(tyCantidad As Currency) As String
Dim lyCantidad As Currency, lyCentavos As Currency, lnDigito As Byte, lnPrimerDigito As Byte, lnSegundoDigito As Byte, lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte, lnBloqueCero
Dim laUnidades As Variant, laDecenas As Variant, laCentenas As Variant, I As Variant ‘Si esta como Option Explicit
tyCantidad = Round(tyCantidad, 2)
lyCantidad = Int(tyCantidad)
lyCentavos = (tyCantidad – lyCantidad) * 100
laUnidades = Array(”UN”, “DOS”, “TRES”, “CUATRO”, “CINCO”, “SEIS”, “SIETE”, “OCHO”, “NUEVE”, “DIEZ”, “ONCE”, “DOCE”, “TRECE”, “CATORCE”, “QUINCE”, “DIECISEIS”, “DIECISIETE”, “DIECIOCHO”, “DIECINUEVE”, “VEINTE”, “VEINTIUN”, “VEINTIDOS”, “VEINTITRES”, “VEINTICUATRO”, “VEINTICINCO”, “VEINTISEIS”, “VEINTISIETE”, “VEINTIOCHO”, “VEINTINUEVE”)
laDecenas = Array(”DIEZ”, “VEINTE”, “TREINTA”, “CUARENTA”, “CINCUENTA”, “SESENTA”, “SETENTA”, “OCHENTA”, “NOVENTA”)
laCentenas = Array(”CIENTO”, “DOSCIENTOS”, “TRESCIENTOS”, “CUATROCIENTOS”, “QUINIENTOS”, “SEISCIENTOS”, “SETECIENTOS”, “OCHOCIENTOS”, “NOVECIENTOS”)
lnNumeroBloques = 1
Do
lnPrimerDigito = 0
lnSegundoDigito = 0
lnTercerDigito = 0
lcBloque = “”
lnBloqueCero = 0
For I = 1 To 3
lnDigito = lyCantidad Mod 10
If lnDigito 0 Then
Select Case I
Case 1
lcBloque = ” ” & laUnidades(lnDigito – 1)
lnPrimerDigito = lnDigito
Case 2
If lnDigito <= 2 Then
lcBloque = " " & laUnidades((lnDigito * 10) + lnPrimerDigito – 1)
Else
lcBloque = " " & laDecenas(lnDigito – 1) & IIf(lnPrimerDigito 0, ” Y”, Null) & lcBloque
End If
lnSegundoDigito = lnDigito
Case 3
lcBloque = ” ” & IIf(lnDigito = 1 And lnPrimerDigito = 0 And lnSegundoDigito = 0, “CIEN”, laCentenas(lnDigito – 1)) & lcBloque
lnTercerDigito = lnDigito
End Select
Else
lnBloqueCero = lnBloqueCero + 1
End If
lyCantidad = Int(lyCantidad / 10)
If lyCantidad = 0 Then
Exit For
End If
Next I
Select Case lnNumeroBloques
Case 1
PesosMN = lcBloque
Case 2
PesosMN = lcBloque & IIf(lnBloqueCero = 3, Null, ” MIL”) & PesosMN
Case 3
PesosMN = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, ” MILLON”, ” MILLONES”) & PesosMN
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
PesosMN = “====(” & PesosMN & IIf(tyCantidad >= 1, ” PESOS, “, ” CERO PESOS, “) & Format(Str(lyCentavos), “00″) & “/100 M.N.)====”
End Function
Luego se coloca la funcion, asi:
=SI(A1=1000000,”===UN MILLÓN DE PESOS, 00/100 M.N.===”,PesosMN(A1)) para quien guste ocuparlo, espero les sirva para sus facturas o cheques aquí en México. Saludos!
Agradecemos tu aporte Antonio.