Es la función base, la comprobación de que la entrada sea correcta (un número entero sin puntos o comas, etc.) se deja al llamante.
El resultado lo da en minúsculas, que aunque parezca una tontería complica mucho las cosas pues números en principio iguales dejan de serlo porque según dónde estén tienen acento o no. Por ejemplo 1021021 es "un millón veintiún mil veintiuno", los 1, a pesar de ser en los tres casos unidades, tienen tres modos (un, ún y uno).
Lo he programado hasta números gigantescos, el mayor es este:
999999999999999999999999999999999999999999999999999999999999999999
con puntitos de millar:
999.999.999.999.999.999.999.999.999.999.999.999.999.999.999.999.999.999.999.999.999.999
Se empieza leyendo:
novecientos noventa y nueve mil novecientos noventa y nueve decallones...

Sí, decallones, lo que aprende uno cuando investiga un poco para los programas...
Como ejemplo de uso se adjunta el archivo LeeNumeroEjemplo.au3, que incluye 3 ejemplos de uso diferente (descomentar unos u otros para ejecutarlos).
El primer código, activado por defecto, es el más interesante, va leyendo números aleatoriamente, hasta que el usuario cancela. La distribución aleatoria se hace por número de cifras, porque si no siempre saldrían números gigantescos. Se cambian algunas cifras a cero porque esos números crean más problemas a _LeeNumero. El segundo ejemplo es un código rápido para probar la función con un número dado.
El tercero es para ver cómo es de rápido.
El cuarto cuenta de 1 a 150.
Espero que os guste. Vi muchos para hacerlo en inglés pero en castellano es mucho más difícil. En inglés cada grupo de 3 indica un cambio de millar, millón, billón, trillón... en cambio nosotros tenemos millar, millón, millares de millón, billón, millares de billón...