Supervisar si sus aplicaciones VBA se están ejecutando con este script Slick
Déjame pintar un escenario para ti. Digamos que ha creado una presentación de diapositivas en PowerPoint que desea mostrar permanentemente en una pantalla de TV grande en el trabajo. O tal vez tenga una aplicación Excel que incluya un formulario de entrada para que sus trabajadores ingresen información en una base de datos.
Hay muchas razones por las que es posible que desee supervisar si una aplicación se está ejecutando en algún equipo remoto. Esto puede parecer un requisito complicado de alto nivel con el que necesitará un experto en TI para que lo ayude, pero estoy aquí para decirle que esta es una tarea que puede realizar usted mismo..
Ha confiado en nosotros para mostrarle cómo realizar otras tareas aparentemente complicadas con VBA antes, como enviar correos electrónicos desde Excel Cómo enviar correos electrónicos desde una hoja de cálculo de Excel mediante scripts de VBA Cómo enviar correos electrónicos desde una hoja de cálculo de Excel mediante scripts de VBA Nuestra plantilla de código lo ayuda a configurar correos electrónicos automatizados desde Excel usando Collaboration Data Objects (CDO) y scripts de VBA. Lea más, pase información al portapapeles de Windows Pase cualquier información entre aplicaciones de VBA usando el portapapeles Pase cualquier información entre aplicaciones de 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 a “hablar” el uno al otro Puede intentar realizar transacciones muy rápidas ... Leer más 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, es probable que haya muchas veces que copie y pegue información de Excel en Word, o al revés. Así es como las personas a menudo producen informes escritos ... Leer más 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, y otra aplicación que se ejecuta en una computadora remota. Es posible - confia en mi.
Un sistema de monitoreo de aplicaciones remotas
Este es básicamente un sistema que puede convertirte en un héroe en el trabajo con solo unas pocas líneas de código 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, ejecutar una pantalla de ingreso de datos de Excel o cualquier otra cosa que sea una aplicación de Office con VBA..
Una escritura 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á de forma remota ese directorio cada cierto tiempo 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 ejecuta.
Esto es lo que parece.
Primero, le mostraré cómo puede agregar la secuencia de comandos VBA en su aplicación de Office local que escribirá el archivo de reconocimiento cada 5 segundos (si el archivo aún no existe).
En mi ejemplo, creé dos botones para mostrarle cómo funciona el script, pero en su aplicación iniciará “Iniciar apreton de manos” Script 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 intercambio, debe activar la referencia de Microsoft Scripting Runtime, que le permite a su aplicación VBA acceder a las herramientas de manipulación de archivos de Window. 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 intercambio. 'Si no es así, escribe un nuevo archivo. 'El archivo se nombra con la identificación de la computadora para que el monitor sepa qué computadora tiene un problema. 'La secuencia de comandos del temporizador para comprobar regularmente el archivo en c: \ scripts \ handshake \. 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" TimerOn = True If Second (Now) > (intTime + 5) O Segundo (ahora) = 0 Luego 'Verificar si el archivo existe' Si no, vuelva a crearlo Si Dir (sFile) = - Entonces 'El archivo no existe, vuelva a crearlo MsgBox "creado" Abrir sFile para salida Como #i Cerrar final Si intTime = Segundo (ahora) Hojas ("hoja 1"). Rango ("a1"). Valor = Tiempo final Si los eventos se cierran
Este script solo tiene 16 líneas si no cuenta las definiciones de variables, ¡eso 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 handshaking. Si no lo hace, recrea el archivo..
Si lo piensas bien, esta es una manera simple y creativa de decirle al mundo que la aplicación está activa y en ejecución. Déjame mostrarte lo que quiero decir. Cuando hago clic en el “Iniciar apreton de manos” 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 más tarde, el archivo vuelve a aparecer..
Eso significa que en este punto, cualquier persona o algo externo a su aplicación puede verificar si su programa está abierto eliminando ese archivo y luego verificando si el archivo vuelve a aparecer. Simple - pero eficiente!
Creación de un script de monitoreo remoto
Ahora que tiene su script de handshaking de 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 apague y controle si esas aplicaciones remotas se están ejecutando..
La mejor manera de hacerlo es con un script que se ejecute en segundo plano sin una interfaz gráfica de usuario. Todo lo que desea que haga el script es darle una alerta 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 Explicito En Error Reanudar Siguiente Reg. Débil Reg. Str Computador Nombre Dim RegenerarCódigo Cadena atenuada Concha débil DimOFSO, sFile, oFile, sText Dim oFSO2, sFile2, oFile2, sText2 Dim strFailedList Set Shell = wscript.createObject ("wscript.shell") CreateObject ("Scripting.FileSystemObject") Set 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) <> - A continuación, StrComputerName = Trim (sText) sFile2 = "\\" & strCompunner, y "! \ 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í". End If Set Shell = Nothing Set oFSO = Nothing WScript.Quit
Este script usa el subsistema de archivos de Windows para abrir primero el “terminallist.ini” archivo, que básicamente tiene todos los archivos de computadora remotos a los que intenta acceder. En este caso, para mi prueba, tiene tres líneas que contienen MyComputerName, MyOtherComputer y YetAnotherComputer.
La secuencia de comandos anterior bajará por su lista de computadoras, accederá a la máquina remota usando la ruta de la red (obviamente necesita 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 las computadoras remotas estén ejecutando 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 en su PC principal que apunte al script.
Y cree un programa indefinido que ejecute su script de monitoreo cada 5 minutos.
Ahora, con solo estos dos scripts simples (un fragmento de VBA incorporado en cualquiera de sus programas de Office existentes y un script de Windows que monitorea constantemente esos programas remotos), se le avisará instantáneamente en el momento en que alguien cierre ese programa remoto o se apague la PC. , o el programa muere por cualquier motivo..
Si está trabajando en un entorno de Windows y ha creado muchas aplicaciones críticas con 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.
Dale una oportunidad y hazme saber cómo te fue? ¿Pudiste impresionar a todos tus colegas con la rapidez con la que sabías cada vez que uno de tus sistemas fallaba? Comparte tus pensamientos y experiencias en la sección de comentarios a continuación.
Créditos de imagen: Hombre joven apuntando a la computadora a través de Shutterstock
Explorar más sobre: Programación, Programación Visual Basic.