Se parte de un simple archivo de Excel que contiene una fuente de datos (a través de un ODBC) y queremos mantener los datos siempre actualizados (n veces al día).
Crear un archivo con el nombre refresh-excel.ps1. Vamos a tomar como ejemplo que lo guardamos en C:\Users\Arthur\Scripts. En la variable $file vamos a indicar la ruta completa del archivo Excel que queremos actualizar la fuente de datos. En este caso el archivo está en una librería de SharePoint Online sincronizada con el equipo.
$file = 'C:\Users\Arthur\OneDrive - Contoso\orders.xlsx' $x1 = New-Object -ComObject "Excel.Application" $x1.Visible = $true $wb = $x1.workbooks.Open($file) $wb.RefreshAll() Start-Sleep -Seconds 10 $wb.Save() $wb.Close() $x1.Quit() Remove-Variable wb,x1
Para probar el script, basta hacer click derecho y seleccionar Ejecutar con PowerShell. Si todo sale como lo esperado, podemos cambiar la variable $x1.Visible por $false para que el script y Excel se ejecuten en background.
Una vez que el script de PowerShell hace lo que esperamos que haga, vamos a pedirle a Windows que cada x cantidad de tiempo lo ejecute. Para eso, abrimos PowerShell como administrador y ejecutamos:
Set-ExecutionPolicy Unrestricted
A partir de ahora, será posible ejecutar un script de PowerShell desde la linea de comando. En realidad no estoy 100% seguro de que este paso sea fundamental.
Abrir el programador de tares ejecutando taskschd.msc
Del menú principal seleccionamos Acción // Crear tarea y configuramos las pestañas general y acciones del siguiente modo:
Agregar una entrada que ejecute el comando PowerShell
Finalizar la configuracion de la tarea como se desee.