Una macro es un conjunto de instrucciones que se ejecutan de principio a fin con un propósito determinado y, normalmente, repetitivo. Por ejemplo, en un proceso de control de calidad se realizan siempre más o menos las mismas tareas: pasar el corrector ortográfico, comprobar que no haya dobles espacios, verificar la terminología usada con la preferida por el cliente, etc.
Como ya se comentó en este blog, es posible automatizar todo este tipo de tareas repetitivas gracias a las macros. Hay muchos programas que permiten el uso de macros, e incluso se pueden crear macros a nivel de sistema operativo con programas como Do It Again o AutoHotkey para automatizar cualquier comando posible, si bien tengo que reconocer que no funcionan todo lo bien y rápido que uno desearía.
Sin embargo, quizás el uso más popular de las macros se encuentra en las aplicaciones de Microsoft Office como Word, Excel y Access. Originalmente se utilizaba el lenguaje BASIC para programar macros, pero con el tiempo evolucionó a Visual Basic for Applications (VBA), un lenguaje de programación para aplicaciones de Office en el que se puede hacer prácticamente todo.
De hecho, una buena manera de aprender este lenguaje es grabando macros de tareas sencillas como aplicar un formato especial a un párrafo o bien crear una tabla determinada y ver el código de la macro. Para grabar una macro debemos ir a Herramientas -> Macro -> Grabar macro; para ver el código, debemos abrir el Editor de Visual Basic del mismo menú. Por supuesto, el código será muy específico y seguramente nada optimizado, pero servirá para aprender.
Aunque yo recomiendo aprender un lenguaje de programación poco a poco si no se tiene experiencia previa en programación, es cierto que se puede aprender mucho de los abundantes ejemplos en Internet, sobre todo si no queremos profundizar mucho en el lenguaje. Por ejemplo, en Programar en Access VBA y los apuntes de Marcela Genero Bocco de VBA para Excel es posible encontrar un sinfín de programas de ejemplo de este lenguaje de programación. Eso sí: nada mejor que la excelente ayuda de Microsoft incluida en el Editor de Visual Basic para conocer todos los comandos posibles.
Yo ya he hecho mis pinitos con VBA y he comprobado cómo con tiempo y ganas se pueden crear verdaderas aplicaciones para Word usando el propio Word. Además, conocer este lenguaje puede sacarte de más de un apuro en el trabajo. Os cuento un caso real que tuvo lugar hace poco en mi trabajo.
Resulta que teníamos una enorme hoja de cálculo de Excel en la que solo se tenían que traducir las celdas de una determinada columna cuyo texto estuviera en rojo. Lo que hizo el traductor fue copiar la columna que tenía que traducir a una hoja aparte y así poder utilizar una herramienta de traducción cómodamente. Sin embargo, nadie se percató de que el archivo original tenía protegidas las celdas que no se debían traducir por contraseña, por lo que era imposible copiar y pegar la hoja traducida. Ya no se trataba de perder una hora copiando y pegando, pues el archivo tenía miles de filas; hubiera sido necesaria una jornada completa para ello teniendo en cuenta que, como humanos que somos, podríamos haber cometido un error entre tanta operación de cortar y pegar.
Así pues, ni corto ni perezoso me puse a ver códigos de ejemplo por Internet para ver cómo podía leer de la hoja traducida las celdas rojas y pegarlas en las correspondientes celdas del archivo original. Este código fue el que finalmente me funcionó e hizo la operación en unos 5 segundos:
Sub macroReplace()
‘Declaramos las variables
Dim i As Long
Dim UltimaFila As LongDim codigo As String
Dim codigo2 As String
Dim valor As String‘Calculamos el número de filas que hay en la hoja.
‘Restamos uno para no contar la fila de encabezados
UltimaFila = ActiveSheet.UsedRange.Row – 1 + ActiveSheet.UsedRange.Rows.Count‘Bucle para repetir una serie de instrucciones y aumentar el número
‘de celda
For i = 1 To UltimaFila‘La contraseña parece que impide utilizar correctamente la propiedad Cells,
‘por lo que tenemos que especificar las columnas:
‘(A) es la primera y (K) donde está el texto que hay que traducircodigo = “K” & i
codigo2 = “A” & i‘Nos situamos en la celda y si el color de la fuente es rojo
‘copiamos el valor del texto traducido que hay en la segunda hojaRange(codigo).Select
If Selection.Font.ColorIndex = 3 Then
valor = Worksheets(“Sheet2”).Range(codigo2).Value
Range(codigo).Value = valorEnd If
Next
End Sub
Espero que los comentarios indicados antes de cada línea de código sean suficientes para comprender lo que hace la macro. Como veréis, me he basado en los ejemplos de las macros de filas de Trucos de Excel en español. Al igual que con LaTeX, tener conocimientos sobre VBA es un plus para nosotros como traductores.
La verdad es que los macros son bastante útiles ya uqe son más visuales y más accesibles, pero es una forma bastante fácil de que te entre algún virus. Y lo de programar…buf, es muy difícil, aunque supongo una vez aprendido el lenguaje es pan comido, aunque yo no sabría por dónde empezar, la verdad…
Sí que conviene echarle un vistazo a estas cosas, que para estar todo el día con el Word, algunos somos bastante torpones 😉
Hola Pablo
Enhorabuena por el blog. Ya se ha convertido en una de mis referencias preferidas. Tanto es así que lo cito en mi página Web http://www.wordbonds.es y les he pasado la referencia de esta entrada a mis alumnos de un posgrado en tradumática.
Saludos