martes, 23 de noviembre de 2021

Power Automate: Ejecutar Macro en Excel

Hoy expondré un ejemplo de cómo automatizar, con Power Automate Desktop, nuestras tareas en Excel.
En particular veremos cómo es posible trabajar sobre un fichero de Excel y ejecutar una macro en él contenida.

Nuestro fichero Excel tiene por nombre: 'PA_EjecutarMacroExcel.xlsm', que por facilidad tendremos abierto (no obstante, recuerda que con Power Automate podemos abrir un fichero Excel cualquiera, incluso habilitar sus macros!!).
Dentro de nuestro fichero existe una macro llamada '' muy simple, que solo añade a la derecha de la celda una fórmula donde multiplicamos por dos celda activa:
Sub PruebaPowerAutomate()
ActiveCell.Offset(0, 1).FormulaR1C1 = "=RC[-1]*2"
End Sub


Con los previos listos, accederemos a Power Automate Desktop para montar nuestro Nuevo Flujo:
Power Automate: Ejecutar Macro en Excel


Un repaso antes de detallar cada paso...
1- para nuestro ejemplo comenzamos generando una lista aleatoria de números...
2- Asociamos a un libro de Excel ya abierto (el ya comentado 'PA_EjecutarMacroExcel.xlsm')
3- elegimos la hoja activa sobre la que trabajar de nuestro archivo
4- e igualmente elegimos cuál será nuestra celda activa, en mi ejemplo la celda A1.
5- con un bucle For...Each recorremos cada elemento de números aleatorios generados (ver primer paso), donde:
5.1- definimos la celda activa como una por debajo de la celda activa anterior...
5.2- escribimos en la hoja de cálculo el valor o elemento que toque de nuestra lista 5.3- y finalmente ejecutamos nuestra macro... lo que completará a su derecha la fórmula comentada.

Veamos con detalle cada paso descrito.

En el paso uno desde las acciones de Variables añadiremos Generar número aleatorio, donde en el ejemplo indicamos que los valores a generar irán entre 0 y 100, además generaremos 5 valores y no permitimos que haya duplicados.
Power Automate: Ejecutar Macro en Excel


En el segundo paso desde el grupo de Excel indicamos que queremos trabajar sobre un archivo ya abierto:Asociar a Excel en ejecución, donde damos el nombre (y ruta si fuera el caso) del archivo... PA_EjecutarMacroExcel.xlsm
Power Automate: Ejecutar Macro en Excel


Paso tres. Del fichero anterior indicamos el nombre de la hoja que activamos, y sobre la que trabajaremos...Establece la hoja de cálculo de Excel activa.
Power Automate: Ejecutar Macro en Excel

Podemos seleccionar la hoja activa bien por 'Nombre de hoja' bien por 'Posición' (o Índice) de izquierda a derecha.

Paso cuatro. Identificamos cuál será la celda activa dentro de la hoja anterior, celda A1 en mi ejemplo... Insertamos la acción Activar celda en hoja de cálculo de Excel.
Power Automate: Ejecutar Macro en Excel

Es posible identificarla en forma absoluta (un número de columna y un número de fila) o de manera relativa (desplazada en alguna dirección desde la actual celda activa...).

Paso cinco. Entramos en el bucle For Each para recorrer la lista aleatoria del punto uno.
Power Automate: Ejecutar Macro en Excel


Dentro del proceso del bucle, en el punto 5.1 activaremos la celda por debajo de la actual celda activa (recuerda que era A1)... esto activará en cada etapa del bucle la celda inmediata por debajo.
Activar celda en hoja de cálculo de Excel
Power Automate: Ejecutar Macro en Excel

Seguimos dentro del bucle en el paso 5.2 donde añadimos la acción Escribir en hoja de cálculo de Excel, donde indicamos que deseamos escribir el elemento actual de la lista aleatoria en la celda activa actual...
Power Automate: Ejecutar Macro en Excel


Finalizamos con el flujo, en el último paso dentro de bucle... Paso 5.3 donde finalmente lanzamos nuestra macro/VBA de Excel: Ejecutar macro de Excel
Basta indicar el nombre de la macro.
Power Automate: Ejecutar Macro en Excel


Al ejecutar nuestro flujo desde Power Automate Desktop veríamos el resultado:

Donde efectivamente comprobamos que se han trasladado cinco valores aleatorios a la hoja 'TestPA' del libro 'PA_EjecutarMacroExcel.xlsm', y cómo además se ha ejecutado la macro en cada momento, añdiendo el procedimiento deseado (multiplicar por dos).

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.