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 articulo 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 articulo 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 numero 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, consulta estos artículos si nunca antes habías instalado un complemento en Excel 2010 o 2007.
Este complemento agrega una función más a tu Excel llamada NumLetras, para usarla 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. Te recomiendo que leas un poco más sobre macros y VBA, puedes encontrar más información aquí.
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.