Monitoree si sus aplicaciones VBA se están ejecutando con este script elegante

  • Harry James
  • 0
  • 5007
  • 569
Anuncio

Déjame pintar un escenario para ti. Supongamos que ha creado una presentación de diapositivas de PowerPoint de desplazamiento que desea mostrar de forma permanente en una gran pantalla de TV en el trabajo. O tal vez tenga una aplicación de Excel que incluya un formulario de ingreso para que sus trabajadores escriban información en una base de datos.

Hay muchas razones por las que es posible que desee supervisar si una aplicación se ejecuta en una computadora remota. Esto puede parecer un requisito complicado de alto nivel con el que necesitará un experto en TI para ayudarlo, pero estoy aquí para decirle que esta es una tarea que puede realizar usted mismo.

Usted ha confiado en nosotros para mostrarle cómo hacer otras tareas aparentemente complicadas con VBA anteriormente, como enviar correos electrónicos desde Excel Cómo enviar correos electrónicos desde una hoja de cálculo de Excel usando scripts de VBA Cómo enviar correos electrónicos desde una hoja de cálculo de Excel usando scripts de VBA Nuestra plantilla de código será ayudarlo a configurar correos electrónicos automatizados desde Excel utilizando Collaboration Data Objects (CDO) y scripts VBA. , pasar información al portapapeles de Windows Pasar cualquier información entre aplicaciones VBA usando el Portapapeles Pasar cualquier información entre aplicaciones VBA usando el Portapapeles Una de las partes más frustrantes de trabajar con VBA dentro de aplicaciones específicas, es que no siempre es fácil obtener dos aplicaciones para “hablar” el uno al otro. Puede intentar transacciones muy rápidas ... e integrar Excel Cómo integrar datos de Excel en un documento de Word Cómo integrar datos de Excel en un documento de Word Durante su semana laboral, probablemente haya muchas veces que se encuentre copiando y pegando información de Excel en Word, o al revés. Así es como la gente a menudo produce informes escritos ... datos en un documento de Word.

Ahora, todas esas cosas eran relativamente pasivas. Enviar correos electrónicos o pasar datos de una aplicación a otra en una computadora es una cosa, pero en este caso vamos a monitorear una aplicación que se ejecuta en una computadora, con otra aplicación que se ejecuta en una computadora remota. Es posible, confía en mí.

Un sistema de monitoreo remoto de aplicaciones

Este es básicamente un sistema que puede convertirlo en un héroe en el trabajo con solo unas pocas líneas de código simples en ambos extremos de la configuración.

¿Cómo será la configuración? Básicamente, esta configuración puede funcionar con varios sistemas informáticos remotos que pueden mostrar algo en una gran pantalla de TV, o ejecutar una pantalla de entrada de datos de Excel, o cualquier otra cosa que sea una aplicación de Office con VBA.

Un script de VBA de apretón de manos

En el ejemplo aquí, voy a crear una computadora donde la aplicación VBA escribe un archivo en el disco duro de la computadora local en el directorio c: \ temp \ handshaking \ cada 5 segundos. Luego, la computadora de monitoreo remoto verificará remotamente ese directorio de vez en cuando para el archivo. Si el archivo existe, lo eliminará (porque si el programa remoto se está ejecutando, debería volver a crear el archivo nuevamente). Si el archivo no existe, emitirá una alerta de que la aplicación en esa computadora ya no se está ejecutando.

Así es como se ve.

Primero, le mostraré cómo puede agregar el script VBA en su aplicación de Office local que escribirá el archivo de protocolo de enlace cada 5 segundos (si el archivo ya no existe).

En mi ejemplo, creé dos botones para mostrarle cómo funciona el script, pero en su aplicación iniciará el “Empieza el apretón de manos” secuencia de comandos cuando se inicia la aplicación. En Excel, esa es la hoja de trabajo -> Activar función.

Antes de comenzar con el script que escribirá el archivo de protocolo de enlace, debe activar la referencia de Microsoft Scripting Runtime; esto permite que su aplicación VBA acceda a las herramientas de manipulación de archivos de Windows. Puede acceder a esto en el editor de VBA, haciendo clic en el menú Herramientas -> Referencias.

Simplemente desplácese hacia abajo, seleccione Microsoft Scripting Runtime, y listo..

'En un horario regular, verifique si existe el archivo de protocolo de enlace. 'Si no es así, escriba un nuevo archivo. 'El archivo se nombra con la ID de la computadora para que el monitor sepa qué' computadora está teniendo un problema. 'Timer script para verificar regularmente c: \ scripts \ handshake \ para el archivo. Dim intTime As Integer Dim sFile As String Dim sPath As String Dim SFname As String Dim i As Integer intTime = 5 i = FreeFile TimerOn = True sFile = "c: \ Temp \ MyComputerName.txt" While TimerOn = True If Second (Now) > (intTime + 5) O Segundo (Ahora) = 0 Luego 'Verificar si el archivo existe' Si no, recrearlo Si Dir (sFile) = - Entonces 'Archivo no existe, recrearlo MsgBox "creado" Abrir sFile para salida Como #i Close End If intTime = Second (Now) Sheets ("sheet1"). Range ("a1"). Value = Time End If DoEvents Wend

Este script solo tiene 16 líneas si no cuenta las definiciones de variables, ¡es un script simple! Todo lo que hace es configurar un ciclo de temporizador que se ejecuta cada 5 segundos. Comprueba si existe el archivo de protocolo de enlace. Si no lo hace, recrea el archivo.

Si lo piensa, esta es una manera simple y creativa de decirle al mundo que la aplicación está viva y ejecutándose. Déjame mostrarte lo que quiero decir. Cuando hago clic en el “Empieza el apretón de manos” botón y luego vaya al directorio c: \ temp \ handshaking \, puedo ver que mi script VBA ha creado el nuevo archivo. Es un archivo vacío, pero eso no importa, lo que importa es que el archivo existe.

Para probar mi script, elimino manualmente el archivo de texto del directorio.

Unos segundos después, el archivo vuelve a aparecer.

Eso significa que en este punto, cualquier persona o cualquier cosa externa a su aplicación puede verificar si su programa está abierto o no eliminando ese archivo y luego verificando si el archivo vuelve a aparecer. Simple, pero eficiente!

Crear un script de monitoreo remoto

Ahora que tiene su script de protocolo de enlace VBA ejecutándose en todas sus aplicaciones remotas, querrá crear un programa central que se ejecute en algún servidor, o tal vez en su propia PC de trabajo, que se apaga y monitorea si esas aplicaciones remotas se están ejecutando.

La mejor manera de hacerlo es con un script que se ejecuta en segundo plano sin una interfaz gráfica de usuario. Todo lo que quiere que haga el script es que le avise cuando alguna de las aplicaciones remotas deje de ejecutarse. La herramienta perfecta para esta aplicación es el script de Windows. Simplemente cree un nuevo archivo de texto llamado handshaking.wsf y pegue el siguiente script.

Opción explícita al error Reanudar Siguiente Dim strHost Dim strComputerName Dim ReturnCode Dim strLine Dim Shell Dim oFSO, sFile, oFile, sText Dim oFSO2, sFile2, oFile2, sText2 Dim strFailedList Set Shell = wscript.createObject ("wscript.shell") Set oFject ("wscript.shell") CreateObject ("Scripting.FileSystemObject") Establecer oFSO2 = CreateObject ("Scripting.FileSystemObject") sFile = "\\ MyComputerName \ c $ \ users \ owner \ scripts \ handshaking \ terminallist.ini" strFailedList = "" If oFSO.FileExists ( sFile) Luego establezca oFile = oFSO.OpenTextFile (sFile, 1) Do While Not oFile.AtEndOfStream sText = oFile.ReadLine If Trim (sText) - Then strComputerName = Trim (sText) sFile2 = "\\" & strComputerName & "\ c $ \ users \ owner \ scripts \ handshaking \ "& strComputerName &" .txt "
 Si oFSO2.FileExists (sFile2) Entonces
 oFSO2.DeleteFile sFile2, True
 Else WScript.Echo strComputerName & "no está ejecutando el software!" End If End If Loop oFile.Close Else WScript.Echo "El archivo no estaba allí". Finalizar si Establecer Shell = Nada Establecer oFSO = Nada WScript.Quit

Este script utiliza el subsistema de archivos de Windows para abrir primero “terminallist.ini” archivo, que básicamente tiene todos los archivos de la computadora remota a la que está intentando acceder. En este caso, para mi prueba, tiene tres líneas que contienen MyComputerName, MyOtherComputer y YetAnotherComputer.

La secuencia de comandos anterior irá a su lista de computadoras, accederá a la máquina remota utilizando la ruta de red (obviamente debe ser un administrador) y, si el archivo existe, lo eliminará. Si el archivo no existe, emitirá una alerta.

Al ejecutar mi script de monitoreo WSF, no alertó en la primera computadora, porque se encontró el archivo, pero sí alertó en las otras dos porque esas aplicaciones remotas aún no existen y no se están ejecutando.

Ahora, para asegurarse de que su software de monitoreo se ejecute regularmente y verifique que todas sus computadoras remotas ejecuten su programa, deberá configurar el script WSF anterior como una tarea programada que se ejecuta cada 5 minutos.

Simplemente cree una tarea en su servidor o su PC principal que apunte al script.

Y cree un horario indefinido que ejecute su secuencia de comandos de monitoreo cada 5 minutos.

Ahora, con solo estos dos scripts simples: un fragmento de VBA integrado en cualquiera de sus programas de Office existentes y un script de Windows que monitorea constantemente esos programas remotos, recibirá una alerta instantánea en el momento en que alguien cierre ese programa remoto o la PC se apague , o el programa muere por cualquier motivo.

Si está trabajando en un entorno Windows y ha creado muchas aplicaciones críticas utilizando el software de Office, esta técnica es una forma muy rápida y económica (¡gratis!) De monitorear de forma remota todas esas aplicaciones críticas.

Pruébalo y cuéntame cómo te fue. ¿Pudiste impresionar a todos tus colegas con la rapidez con que sabías cuando uno de tus sistemas estaba caído? Comparta sus pensamientos y experiencias en la sección de comentarios a continuación..

Créditos de imagen: joven apuntando a la computadora a través de Shutterstock




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.