Imagen: Andrei Popov, Getty Images/iStockphoto

Muchos de nosotros tenemos tareas recurrentes que se repiten diariamente, semanalmente, mensualmente o incluso cada hora. No es necesario abrir un documento y realizar la misma tarea una y otra vez. Si la tarea se puede automatizar mediante un procedimiento de VBA, puede ejecutar este procedimiento desde el Programador de tareas de Windows 10. Ocurrirá en segundo plano y ni siquiera lo sabrá. Por lo tanto, si encuentra tediosas las tareas repetitivas o las olvida con frecuencia, pruebe el Programador de tareas de Windows 10.

Esta solución requiere Microsoft Visual Basic Scripting Edition (VBScript), pero este artículo proporciona todas las instrucciones que necesita. Una vez que haya visto lo versátil que es este lenguaje de secuencias de comandos, puede explorarlo más a fondo por su cuenta. Además, usaremos el Programador de tareas de Windows 10, pero no se preocupe si esta herramienta es nueva para usted, es fácil de usar. Este artículo asume que está familiarizado con Excel y VBA. Si tiene algún problema en algún momento, lea la sección Solución de problemas al final de este artículo.

MÁS INFORMACIÓN: Precios y características de Office 365 Consumer

Uso Office 365 y el Programador de tareas de Windows 10 en un sistema Windows 10 de 64 bits, pero debería funcionar con versiones anteriores de Office y Windows. Puede usar los archivos de demostración descargables de Excel .xlsm, .xls, .bas y .vbs. Esta técnica no es apropiada para la edición del navegador de Excel. Tenga en cuenta dónde guarda los archivos; necesitará esta información más adelante.

Índice
  • La tarea
  • El cuaderno y el procedimiento.
  • El escenario
  • Programador de tareas
  • Reparar
  • Envíame tu pregunta sobre Office
  • La tarea

    Figura A muestra un objeto Table simple con datos y una tabla dinámica. Suponga que los usuarios ingresan nuevos registros a lo largo del día y desea imprimir o enviar por correo electrónico una copia de la tabla dinámica actualizada todas las mañanas a las 8:00 a. m. A menos que los usuarios sepan actualizar la tabla dinámica, es posible que no obtenga información actualizada. Entonces, cada mañana a las 8 a.m., abre el archivo, actualiza la tabla dinámica y luego la imprime o la envía por correo electrónico. Nos ceñiremos a lo básico y simplemente lo imprimiremos.

    Figura A

    Automatizaremos una tarea que imprime la tabla dinámica actualizada todas las mañanas a las 8:00 a. m.

    Crear un procedimiento de VBA que funcione en Excel es el primer paso. El siguiente paso es usar el Bloc de notas para escribir un script breve que cree una instancia de Excel y ejecute la macro. Finalmente, crearemos una tarea básica que ejecute el VBScript a las 8 a.m. todas las mañanas.

    El cuaderno y el procedimiento.

    Puede configurar fácilmente un libro de trabajo para actualizar una tabla dinámica al abrir si los datos están en un objeto de tabla (la demostración .xlsm lo está). Para hacer esto, haga clic con el botón derecho en cualquier parte de la tabla dinámica y elija Opciones de tabla dinámica en el submenú resultante. En el cuadro de diálogo resultante, haga clic en la pestaña Datos. A continuación, marque la opción Actualizar datos al abrir un archivo en la sección Datos de la tabla dinámica (Figura B). No es necesario que hagas esto para que esta técnica funcione, pero debes saber que puedes hacerlo.

    Figura B

    Puede obligar a Excel a actualizar los objetos de la tabla dinámica cuando abre el libro.

    Actualmente, abrir el libro de trabajo actualizará la tabla dinámica, pero aún debe imprimirla. Aquí es donde entra en juego la macro. Abra el Editor de Visual Basic (VBE) del libro de trabajo presionando Alt+F11. En el menú Insertar, elija Módulo. En el módulo resultante, ingrese el procedimiento que se muestra en Lista A. No intente copiar el código de esta página web: VBE no podrá interpretarlo correctamente; en su lugar, introdúzcalo usted mismo o importe el archivo .bas descargable.

    Lista A

    Sub PrintUpdatedPivotTable()'Update and then print PivotTable1.Dim pt As PivotTableSet pt = Sheets("PivotTable").PivotTables("PivotTable1")'Select PivotTable1.pt.TableRange1.Select'Refresh all pivottables.ThisWorkbook.RefreshAll'Set landscape mode.ActiveSheet.PageSetup.Orientation = xlLandscape'Print PivotTable1.ActiveWindow.SelectedSheets.PrintOutEnd Sub

    El código identifica y selecciona la tabla dinámica que desea imprimir (PivotTable1 es su nombre predeterminado y no lo cambié). Después de actualizar todos los objetos de la tabla dinámica, el procedimiento imprime la tabla dinámica seleccionada (PivotTable1) en modo horizontal. Con el método PrintOut, puede especificar varias copias, etc. Para probar el procedimiento, haga clic en cualquier lugar dentro y presione F5.

    Guarde el libro y ciérrelo. Si está utilizando la versión de la cinta, asegúrese de guardar el libro de trabajo como un archivo habilitado para macros (.xlsm). Anote la ubicación del libro de trabajo y el nombre del procedimiento, ya que lo necesitará en el script que escribiremos a continuación. El archivo de demostración se guarda localmente en la carpeta Documentos.

    El escenario

    VBScript sigue el modelo de Visual Basic y lo utilizan principalmente los administradores, pero es lo suficientemente simple como para que la mayoría de nosotros podamos aprender los conceptos básicos. Usaremos el Bloc de notas como editor de secuencias de comandos. Abra el Bloc de notas e ingrese el script que se muestra en Lista B.

    Lista B

    'Print PivotTable1 in Excel workbook, PivotTable1.xlsm.Set objApp = CreateObject("Excel.Application")Set objwb = objApp.Workbooks.Open("C:UsersSusan HarkinsDocumentsPivotTable1.xlsm")objApp.Visible = FalseobjApp.Run "PrintUpdatedPivotTable"objwb.Close FalseobjApp.QuitSet objApp = NothingMsgBox "PivotTable printed successfully", vbInformation

    Este sencillo script crea una instancia de Excel, identifica el libro de trabajo con la tabla dinámica que queremos imprimir y abre ese archivo. Con la propiedad Visible establecida en False, no la verá. Luego, el script ejecuta la macro en la Lista A que actualiza los objetos de la tabla dinámica y luego imprime la tabla dinámica1. Después de imprimir, la secuencia de comandos cierra el libro de trabajo sin pedirle que guarde, cierra la instancia de Excel y establece el objeto de Excel en Nada.

    Guarde el archivo como PrintPivotTable1.vbs. Debe agregar la extensión .vbs usted mismo al ingresar el nombre. Cierre el archivo anotando su ubicación.

    Programador de tareas

    El Programador de tareas es una herramienta de administración de Windows que existe desde hace mucho tiempo: es fácil de usar y flexible. Solo utilizaremos una pequeña parte de su funcionalidad.

    En el menú Inicio de Windows, expanda Herramientas administrativas de Windows y seleccione Programador de tareas. Para agregar la tarea, haga lo siguiente:

    1. En el menú Acción, elija Crear tarea básica.
    2. Asigne a la tarea un nombre significativo, como PrintPivotTable1.
    3. Agregue una breve descripción (Figura C). Es posible que sienta la tentación de omitir este paso, pero es fácil pasar por alto una tarea que se ejecuta automáticamente y otras también se beneficiarán. Haga clic en Siguiente.
    4. Elija Diariamente para esta tarea y haga clic en Siguiente.
    5. Ingrese 8:00:00 AM en el comando Inicio a la derecha. Deje la configuración Repetir cada en 1 (el valor predeterminado), como se muestra en Figura D. Haga clic en Siguiente.
    6. En la sección Acción, mantenga la opción predeterminada, Iniciar un programa. No cambie ninguna configuración, simplemente haga clic en Siguiente.
    7. Mencioné anteriormente que necesitaría saber la ubicación del archivo. Utilice el botón de exploración para localizar PrintPivotTable1.vbs.
    8. En el control Acción, Iniciar un programa, ingrese C:WindowsSystem32wscript.exe. Esto no debería ser diferente para la mayoría de los usuarios: identifica el programa VBScript. Es posible que vea cscript.exe a medida que aprende más sobre el lenguaje; cscript.exe funciona desde la consola. Si no puede encontrar este archivo .exe, escriba donde script en Cortana.
    9. En el control Agregar argumentos, identifique la ruta del libro de trabajo: "C:UsersSusan HarkinsDocumentsPrintPivotTable.vbs", como se muestra en Figura E. Las comillas son obligatorias y su ruta será diferente a la mía, así que actualice en consecuencia.
    10. Haga clic en Siguiente y luego en Finalizar.

    Figura C

    Nombre y describa la tarea.

    Figura D

    Ingrese la hora en que desea imprimir la tabla dinámica.

    Figura E

    Identifique el lenguaje de secuencias de comandos y la ruta del libro de trabajo.

    Para probar el script, haga clic con el botón derecho en la lista de tareas y seleccione Ejecutar.

    Reparar

    Están sucediendo muchas cosas, por lo que los errores son fáciles. Los errores más probables son errores tipográficos, es decir, no especificar los nombres y ubicaciones correctos de .vbs, .xlsm y macro. Afortunadamente, VBScript mostrará mensajes de error, por lo que es fácil identificar la instrucción real. Si recibe un mensaje de error de objeto, verifique los nombres de las variables en el script. Si recibe un error de que Windows no puede encontrar el archivo o la macro, verifique los nombres y las rutas. Si el problema parece ser uno de los permisos, es posible que necesite ayuda de su administrador. Recomiendo guardar los archivos localmente en lugar de en un servidor en red mientras experimenta.

    Si elige un momento extraño, por ejemplo, en medio de la noche para imprimir y el trabajo no se realiza, marque la opción Seguridad del trabajo. Puede cambiar la Ejecución predeterminada solo cuando el usuario haya iniciado sesión en Ejecutar, ya sea que el usuario haya iniciado sesión o no (Figura F).

    Figura F

    Cambie esta opción si desea que la tarea se ejecute aunque no haya iniciado sesión.

    Aunque VBScript admite el manejo de errores, no hay ninguno en este script simple. Si trabaja con impresoras de red que son propensas a desconectarse inesperadamente o encontrar otros problemas, es posible que desee agregar el manejo de errores adecuado.

    Envíame tu pregunta sobre Office

    Respondo las preguntas de los lectores cuando puedo, pero no hay garantías. No envíe archivos a menos que se le solicite; las solicitudes de ayuda iniciales que lleguen con archivos adjuntos se eliminarán sin ser leídas. Puede enviar capturas de pantalla de sus datos para ayudar a aclarar su pregunta. Cuando se comunique conmigo, sea lo más específico posible. Por ejemplo, "Por favor, resuelva los problemas de mi libro de trabajo y corrija lo que está mal" probablemente no obtendrá una respuesta, pero "¿Puede decirme por qué esta fórmula no arroja los resultados esperados?" fuerza. Mencione la aplicación y la versión que está utilizando. TechRepublic no me reembolsa por mi tiempo o experiencia cuando ayudo a los lectores, ni cobro una tarifa por los lectores a los que ayudo. Puede ponerse en contacto conmigo en [email protected]