Si eres un fanático de Excel como yo, quizá ya hayas visto e incluso instalado algunos complementos para Excel, existen muchos realmente útiles, algunos son pagados y otros son gratis.
Pero el propósito de este artículo es iniciarte en el mundo de la creación de complementos para Excel. Si esto de los complementos es nuevo para ti, te recomiendo que primero leas este otro artículo que habla un poco de como se instalan.
Crear un complemento puede ser fácil o difícil, todo depende de lo que desees programar, pero para este ejercicio vamos a crear un complemento que convierta números a letras y al finalizar tendremos siempre disponible en nuestro Excel una función que nos permita convertir cualquier número a letras.
Primero debemos crear un nuevo documento de Excel, luego presionamos Ctrl+F11 para entrar al editor de VBA, luego insertamos un Modulo.
Ahora en la parte izquierda copiamos y pegamos el siguiente código:
Function NumLetras(Valor As Currency, Optional MonedaSingular As String = "", Optional MonedaPlural As String = "") 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
Dim ValorEntero As Long
Valor = Round(Valor, 2)
lyCantidad = Int(Valor)
ValorEntero = lyCantidad
lyCentavos = (Valor - 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
NumLetras = lcBloque
Case 2
NumLetras = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL") & NumLetras
Case 3
NumLetras = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, " MILLON", " MILLONES") & NumLetras
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
NumLetras = NumLetras & " " & Format(Str(lyCentavos), "00") & "/100 " & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)
End Function
Ya casi hemos terminado, ahora cerramos esta ventana de VBA y guardamos el archivo de Excel que creamos como “Complemento de Excel” de extensión xla
para Excel 2003 y xlam para Excel 2007 o superior. Por cierto, el formato xla del Excel 2003 también es compatible con las versiones posteriores (Excel 2007 en adelante)
Ahora ya tienes tu primer complemento de Excel, para usarlo antes debes instalarlo.
Este complemento agrega una función más a tu Excel llamada NumLetras, para utilizarla solo inserta en una celda la función con los parámetros que solicita.
Conclusiones
Para crear un complemento básicamente creamos una o más macros, luego guardamos el archivo de Excel como Complemento y de esta forma podemos reutilizar dichas macros en cada archivo de Excel que usemos.
Hola, yo tengo la version 2010 en excel, guardo el archivo con la extensión que mencionan, y cuando después de elegir el complemento le doy aceptar y me dice que no es valido.
Si pueden ayuda se los agradecería.
Muy util la informacion, es mas, descargue los complementos para Excel 2007 y 2010 ya que necesitaba en un documento que automatice que pusiera cantidades en letrs, de manera natural, Excel no trae esta funcion per gracias a ustedes pude resolver el problema, ahora mi jefa esta contenta que podamos imprimir documentos que se ingresa el numero y lo convierte a letra.– Muchas gracias por toda esa util informacin que han facilitado por la internet.
Me alegra mucho que te guste este blog, gracias por tu comentario.