C/ San Andrés 8 (Madrid), coworking La Industrial

Cómo lanzar una macro desde otra macro

Lanzar macros desde otra macro es una forma sencilla de agilizar aún más el trabajo con Microsoft Word.

Quien lleve ya un tiempo corrigiendo probablemente habrá reunido una colección de macros de búsqueda y reemplazo (ByR para los amigos) que se ocupen de limpiar los textos de todos los sospechosos habituales que los ensucian:

  • dobles espacios,
  • tabuladores a principio de línea,
  • puntos finales tras las exclamaciones e interrogaciones de cierre,
  • días de la semana en mayúsculas,
  • etcétera.

Además, habrá añadido otras que unifiquen de forma coherente las voces biacentuales, que pongan o quiten mayúsculas de cosas diversas según el tipo de textos en los que suela trabajar, que conviertan en superíndices o subíndices lo que corresponda, que aseguren la presencia o ausencia de las tildes en el solo y los demostrativos de acuerdo con las preferencias de sus clientes…

Esa colección le ahorrará al corrector muchísimas horas de trabajo a lo largo del tiempo, pero aún puede sacarle mayor partido si deja que sea Word quien se encargue de lanzar esas macros por él.

Para ello basta con crear una nueva macro basada en la instrucción:

Application.Run MacroName:="NombreMacro"

Donde NombreMacro se refiere, evidentemente, al nombre de la macro que queremos que Word ejecute por nosotros.

La macro en acción

Veámoslo en la práctica. Imaginemos que en nuestro cinturón de herramientas correctoriles tenemos siete macros:

  • una de limpieza general (por ejemplo, el extraordinario Quitamanchas del Dr. Macro),
  • una que se ocupa de la distribución de las mayúsculas y minúsculas en los nombres de los imperios (Imperio romano, Imperio británico…),
  • otra que coloca en versalitas las cifras romanas cuando se refieren a los siglos,
  • dos que unifican las voces biacentuales según las preferencias del Manual de estilo de la lengua española,
  • una más que sustituye las comillas inglesas y las rectas por latinas; y
  • una última que se asegura de que varias palabras que nuestro cliente quiere con mayúscula inicial se ajusten a su preferencia.

Para trabajar aún menos y no tener que ejecutar esas macros de una en una, podemos pedirle a Word que lo haga por nosotros. Lo haremos creando una nueva macro a la que llamaremos, por ejemplo, Ejecutor. Esta macro contendrá las siguientes instrucciones:

Application.Run MacroName:="Quitamanchas"

Application.Run MacroName:="Imperios"

Application.Run MacroName:="SiglosVersalitas"

Application.Run MacroName:="BiacentualesSousa_1"

Application.Run MacroName:="BiacentualesSousa_2"

Application.Run MacroName:="ComillasLatinas"

Application.Run MacroName:="Preferencias_ClienteA"

Cuando la lancemos, Word ejecutará, una tras otra, las macros mencionadas en cada línea. Unos cuantos cientos o miles de búsquedas y reemplazos pulsando un solo botón. No está mal.

Adaptar la macro sobre la marcha

Pero, un momento, acabo de recibir un encargo del Cliente B y quiero que Ejecutor lance todas las macros salvo la última, que quiero sustituir por la lista de reemplazos con las preferencias de ese cliente. ¿Creo una macro nueva, un Ejecutor_2, que se encargue de eso? No es necesario: podemos introducir todas nuestras macros de ByR en una sola y luego excluir de la ejecución la que queramos dejar fuera.

Para ello, basta con que coloquemos un apóstrofo (') delante de la línea que contiene la macro que queremos que Word ignore. De ese modo, para lanzar la lista de preferencias del Cliente B y dejar fuera la del Cliente A, modificaríamos a nuestro Ejecutor para que luciera así:

Application.Run MacroName:="Quitamanchas"

Application.Run MacroName:="Imperios"

Application.Run MacroName:="SiglosVersalitas"

Application.Run MacroName:="BiacentualesSousa_1"

Application.Run MacroName:="BiacentualesSousa_2"

Application.Run MacroName:="ComillasLatinas"

'Application.Run MacroName:="Preferencias_ClienteA"

Application.Run MacroName:="Preferencias_ClienteB"

La línea que hayamos «comentado» (como dicen los programadores) quedará resaltada en verde y no se ejecutará.

Por lo tanto, podemos ir añadiendo todas nuestras macros de ByR al Ejecutor a medida que las creemos. Con cada nuevo trabajo, bastará comentar o «descomentar», con perdón, las líneas correspondientes.

Es importante no olvidar que las macros se ejecutarán en el orden en el que aparecen. Según eso, en nuestro ejemplo, las instrucciones contenidas en Quitamanchas se aplicarán antes que las de Imperios. Así que, si es necesario que algún reemplazo preceda a otro, debemos colocar las macros en el orden adecuado.

Elogio de la pereza

Word está diseñado para que los resultados que obtengamos sean mejores cuanto menos trabajemos para alcanzarlos. Este comando de VBA es una de las múltiples herramientas para vagos productivos que nos ofrece. Un arma imprescindible en el arsenal de cualquiera, corrector o no.


Los comandos citados en el artículo, entre otros muchos, se pueden encontrar en dos fantásticas colecciones de instrucciones de VBA: una recopilada por la correctora, compositora, programadora y varias cosas más JoJo Zawawi; la segunda es obra del corrector y gurú de Word Jack Lyon (Macro Cookbook for Microsoft Word).

Compartir:

Artículos relacionados