
Ya vimos en este artículo una macro en AutoHotkey para hacer el recuento de caracteres de un texto. No hay que ser Nostradamus para adivinar que lo lógico sería seguir con un método para contar palabras con AutoHotkey.
¿Preparado?
¿Por qué contar las palabras?
Si eres traductor, no te descubro nada si digo que las palabras se cuentan para poder evaluar cuánto costará traducir un texto a otro idioma. Si tienes decidida tu tarifa por palabra, el importe que cobrarás a un cliente será un cálculo directo: el producto del número de palabras por la tarifa.
El motivo es que hay una relación entre el número de palabras y el esfuerzo que necesitarás dedicar a traducir el texto. No es la única variable, pero considerando que todo permanece igual, contar las palabras significa poder dar un presupuesto ajustado al céntimo. También es bueno para el cliente, porque puede conocer a priori el coste de una traducción.
Si no eres traductor, sino un escritor que genera contenido, estarás de acuerdo conmigo en que conocer el número de palabras te da una idea del esfuerzo que necesitarás dedicarle a ese contenido, es decir, lo que podrás facturar al cliente. Intervienen más variables, como la dificultad, la urgencia, pero si supones que el resto de variables permanece igual, el número de palabras te dará una buena idea del volumen del proyecto.
Cómo hacer el recuento de palabras en Word
Quizás sea Word la aplicación más extendida, por lo que merece la pena ver someramente cómo se calcularía el número de palabras en Word.
Si quieres conocer el número de caracteres de un documento en formato Word, el proceso es directo, ya que Word hace directamente el recuento de caracteres. En la barra de estado tienes el recuento de palabras:

Aparte del número de palabras del documento completo, Word también puede darte el recuento de palabras del texto seleccionado:

Como puedes ver, Word da 2 cifras separadas por una barra: la primera es el recuento de palabras del texto seleccionado, mientras que la segunda cifra sigue siendo el total de palabras del documento.
Ver el número de palabras es muy fácil en Word, pero ¿qué sucede si tienes que calcular el número de palabras en otros formatos, como Excel, PDF, TXT?
La primera forma que se nos puede ocurrir es copiar el texto del documento y pegarlo en una hoja en blanco de Word.
Pero hay otras formas más directas y versátiles, que son las que vamos a ver a continuación.
Antes de entrar en el meollo, tenemos que crear las bases que sostendrán nuestra macro:
¿Qué es una palabra?
Vale, podría dar una definición de diccionario, pero ni lo voy a intentar…
Sí te diré que como vamos a programar una macro para contar palabras con AutoHotkey, tiene mucho sentido que primero definamos qué es una palabra para poder programar correctamente la macro.
Es más, uno de los problemas crónicos que hay en el mundo de la traducción es qué se considera como una palabra.
A bote pronto, cualquiera podría decir que una palabra va separada por espacios. Por ejemplo, dos palabras tiene, efectivamente, 2 palabras.
Pero los que oyen esta sencilla definición encuentran sus excepciones. Por ejemplo, muchos dirán que los guiones deben considerarse también como separadores de palabras. Por ejemplo, en las construcciones anglosajonas de 20-year-old boy solo tiene 2 palabras con el primer criterio, pero para muchos, que 4 sería más lógico.
Lo mismo para los apóstrofos, como en It's Peter's idea. Aquí los procesadores de textos darían 3 palabras, pero muchos traductores verán hasta 5 palabras, ¿verdad?
Lo mismo para las opciones separadas con barras, como OK/Cancel; parece que deberían ser 2 palabras y no solo una.
Los recuentos de palabras en las listas numeradas pueden contener o no los números. Por si te lo estás preguntando, las listas no numeradas (•) no cuentan el carácter empleado como viñeta como una palabra. Por ejemplo, en la línea:
- 2 palabras
Word contaría 2 palabras, mientras que en:
- 2 palabras
- 2 palabras
Word contaría 3 palabras en cada línea.
Lo sé: Son fenómenos paranormales…
Por último, también puedes tener en cuenta o no el texto oculto. Si tienes que traducir el texto oculto, debes incluirlo en el recuento.
Malditos espacios
¿Te acuerdas que dijimos que un espacio sirve para separar palabras? Pues no te dejes arrastrar por la aparente sencillez.
Porque, para ti ¿cuántas palabras tienen estos textos?
- 12[espacio duro]metros
Aquí, [espacio duro] es un espacio especial, distinto al espacio «normal»; se coloca para mantener unidos la cifra y la unidad de medida.
Seguramente dirás que son 2 palabras y para mí estarás en lo cierto. - Prénom : Jesús
C'est vrai ; je…
Ce n'est pas possible !
« Oui »
En estas construcciones francesas, Word da 1 palabra más en cada línea de lo que diríamos como humanos, porque cuenta los caracteres de dos puntos (:), punto y coma (;) y admiración (!) como una palabra más, ya que están separados por un espacio. En la última línea, contaría cada una de las comillas (« ») como un carácter más. Todos estos casos chocan con la idea de no considerar como palabras los signos de puntuación, como la coma y el punto. ¡Así es Word!
Si lo piensas bien, también habría que considerar como los siguientes caracteres de separación de palabras:
- las tabulaciones;
- los retornos de línea;
- los separadores de celdas en tablas.
Conclusiones:
- No hay un único recuento de palabras; depende de cómo se haga. En función de la herramienta tendrás un recuento u otro.
- Estas diferencias en el recuento de palabras no llevarán a desviaciones superiores al ± 3 %. Es una diferencia muy pequeña, que de todas formas puedes igualar con tu tarifa. Por ello, diría que, a pesar de haber sido testigo de grandes trifulcas entre traductores por el asunto de qué se debe entender por una palabra, no merece la pena perder mucho tiempo en estas diatribas.
- En la próxima sección, decidiremos un criterio para contar las palabras.
Ahora sí: ¿Preparado para la macro de AutoHotkey?
Recuento de palabras y caracteres con AutoHotkey
Nos metemos ya de lleno en crear una macro para poder contar las palabras del texto seleccionado.
El objetivo es crear una macro de AutoHotkey que nos muestre el siguiente cuadro de diálogo con el número de caracteres y palabras seleccionadas en cualquier aplicación:

Según lo dicho anteriormente, consideraremos separadores de palabras no solo los espacios «normales», sino también:
- los tabuladores;
- los retornos;
- las barras;
- los guiones;
- los espacios duros;
- los apóstrofos.
La macro que uso para conseguir el número de palabras y caracteres es la siguiente:
; -------------------------------------------------
; Macro para contar palabras con AutoHotkey
; www.gonduana.com/como-contar-palabras-con-autohotkey
; -------------------------------------------------
; WIN + ALT + C
#!c::
Clipboard=
SendInput, ^c
ClipWait, 0
cadena := Clipboard
; Sustituir retornos de línea y tabuladores a espacios
cadena := StrReplace(cadena, "`r`n", A_SPACE, retornos)
párrafos := retornos + 1
cadena := StrReplace(cadena, A_Tab, A_SPACE)
; Contar los caracteres totales
caracteres := StrLen(cadena)
; Contar los espacios
StrReplace(cadena, A_SPACE,, espacios)
caracteresSinEspacios := caracteres - espacios
; Sustituir apóstrofos, guiones, barras y espacios duros por espacios
cadena := StrReplace(cadena, "’", A_SPACE)
cadena := StrReplace(cadena, "'", A_SPACE)
cadena := StrReplace(cadena, "-", A_SPACE)
cadena := StrReplace(cadena, "/", A_SPACE)
cadena := StrReplace(cadena, " ", A_SPACE)
; Quitar los espacios iniciales y finales
cadena = %cadena%
; Reemplazar varios espacios seguidos por 1 espacio
cadena := RegExReplace(cadena, " {2,}", " ")
caracteresFiltrados := StrLen(cadena)
; Contar los espacios que separan palabras
StrReplace(cadena, A_SPACE,, espaciosSeparadores)
; Si hay algún carácter distinto de espacio
if (caracteresFiltrados) {
caracteresSinEspacios := caracteresFiltrados - espaciosSeparadores
palabras := espaciosSeparadores + 1
}
else {
palabras := 0
caracteresSinEspacios := 0
espacios := 0
}
MsgBox 0, Recuento de palabras y caracteres, %caracteres% caracteres (TOTAL)`r`n%caracteresSinEspacios% caracteres sin espacios`r`n`r`n%palabras% palabras`r`n%párrafos% párrafos, 6
return
Te puedes descargar la macro:
Análisis de la macro para contar palabras con AutoHotkey
La siguiente macro es una continuación de la ya vista en este artículo, donde vimos una macro para contar los caracteres del texto seleccionado; como no me voy a repetir, te recomiendo que lo leas si quieres entender toda la macro.
Además, es una macro algo extensa, así que re ruego concentración para no perdernos….
Como ves en la línea 6, la macro se lanza al teclear la combinación WINDOWS+ALT+C en cualquier aplicación. La «C» es una regla nemotécnica para «Contar», pero por supuesto, puedes cambiar el atajo a tu gusto.
En las líneas 7 a 11 se copia el texto seleccionado y se pasa el contenido a la variable cadena.
En las líneas 14 a 6 se sustituyen todos los retornos de línea y los tabuladores a espacios. El motivo lo vimos en este artículo. Además, se cuenta el número de retornos en la variable retornos. Ya que cada retorno divide 2 párrafos, número de párrafos será el número de retornos más 1.
En la línea 19 se cuenta el número de caracteres y el valor se guarda en la variable caracteres. Ya sabes que esta macro nos dará tanto el recuento de caracteres como de palabras.
En las líneas 22 y 23 se cuenta el número de espacios (considerando esta vez que las tabulaciones y los retornos se han cambiado a espacios) y se guarda en la variable espacios. Además, en la variable caracteresSinEspacios se guarda el número de caracteres sin espacios, ya que lo vamos a mostrar también al final de la macro.
Puede decirse que el código siguiente es específico para contar las palabras:
En las líneas 26 a 30 se sustituyen todos los apóstrofos, guiones, barras y espacios duros por espacios. El motivo se explica arriba, pero si no estás de acuerdo con este criterio, puedes borrar estas líneas.
Fíjate en dos cosas:
- Se han tenido en cuenta dos tipos de apóstrofos, el recto (') y el tipográfico (’).
- En la línea 30, " " parece un espacio, pero en realidad es un espacio duro, conseguido tecleando ALT+0160.
La línea 33 es una forma sencilla de deshacernos de los espacios iniciales y finales de la cadena de texto, si los hubiera. Aunque estos espacios ya se contaron en la línea 22, no son espacios que separen palabras, por lo que se borran sin piedad.
En la línea 35 se reemplazan varios espacios en uno solo. Para ello se emplea la función RegExReplace de AutoHotkey y la expresión regular {2,}. Cuando se encuentran al menos 2 espacios, se sustituirán por , es decir, un único espacio. Si quieres saber más sobre las expresiones regulares, puedes consultar estos artículos de Gonduana. Esta línea es necesaria porque 2 espacios seguidos no son 2 separadores efectivos de palabras, sino 1 solo.
Las líneas 36 a 49 siguen la lógica de la macro y no son complicadas de entender.
Finalmente, la línea 51 muestra un cuadro de diálogo con el número de caracteres (con y sin espacios) más el número de palabras y el número de párrafos. El último parámetro de la función MsgBox es 6, que indica que el cuadro de diálogo se cerrará automáticamente al cabo de 6 segundos si no se cierra antes pulsando el botón Aceptar.

Conclusiones
Hemos visto una macro de AutoHotkey para contar los caracteres y las palabras del texto seleccionado.
Funciona en cualquier aplicación, es rápida y la puedes personalizar a tu gusto.
¿Se puede pedir algo más?
A mí se me ocurre que se podría crear una macro en AutoHotkey para abrir varios documentos, incluso en subcarpetas, y calcular el recuento total de todo. Sería útil, ¿verdad?
¿Alguien se anima a programarla?
Por ejemplo, ¿te animas a añadir los siguientes caracteres de separación?
- el espacio fino (código ASCII 08201);
- el espacio fino de no separación (código ASCII 08239);
- la semirraya (–) tan común en los textos en inglés.
¿Alguna idea más sobre la forma de contar palabras en AutoHotkey?
⁂
Nada más, solo un par de recomendaciones si te interesa leer más sobre AutoHotkey o si quieres estar al tanto de los nuevos artículos de Gonduana:
- Lee los otros artículos de AutoHotkey de este mismo blog. Los tienes todos si filtras por «AutoHotkey» en la nube de etiquetas (columna derecha del blog).
- Suscríbete al boletín del blog, o sígueme en LinkedIn o Twitter (@jssprt). De esta manera, serás el primero en enterarte de la publicación de los artículos.






