Monitorear si sus aplicaciones vba se están ejecutando con este script mancha
Me deja pintar un escenario para ti. Digamos que usted ha creado una presentación de diapositivas de PowerPoint desplazamiento que desea mostrar de forma permanente en una gran pantalla de televisión en el trabajo. O, tal vez usted tiene una aplicación de Excel que incluye un formulario de inscripción para sus trabajadores para escribir información en una base de datos.
Hay muchas razones por las que podría querer controlar si una aplicación se está ejecutando en algún ordenador remoto. Esto puede sonar como un requisito de alto nivel complicado que necesitará un experto en TI para ayudarle con, pero estoy aquí para decirles que esta es una tarea que puede realizar usted mismo.
Usted nos ha confiado en que le muestre cómo hacer otras tareas aparentemente complicados con VBA antes, como el envío de mensajes de correo electrónico desde Excel, pasar información a la portapapeles de windows, y la integración de Excel datos en un documento de Word.Cómo enviar correos electrónicos desde una hoja de Excel VBA mediante secuencias de comandosCómo enviar correos electrónicos desde una hoja de Excel VBA mediante secuencias de comandosEn el pasado, he usado correo electrónico mucho en mis trabajos por lotes y otros scripts automatizados, al igual que he descrito en artículos anteriores. Estos son ideales para esos momentos en los que tiene una secuencia de comandos ...Lee mas
Ahora, todas esas cosas eran relativamente pasiva. Envío de correos electrónicos o pasar datos de una aplicación a otra en un equipo es una cosa, pero en este caso vamos a controlar una aplicación que se ejecuta en un ordenador, con otra aplicación que se ejecuta en un equipo remoto. Es posible - confía en mí.
Un Sistema de Control de Aplicación remota
Esto es básicamente un sistema que se puede convertir en un héroe en el trabajo con tan sólo unos simples líneas de código en ambos extremos de la configuración.
¿Cómo será la configuración parece? Básicamente, esta configuración puede trabajar con múltiples sistemas informáticos remotos que podrían estar mostrando algo en una pantalla de TV grande, o ejecutan una pantalla de entrada de datos de Excel, o cualquier otra cosa que es una aplicación de Office con VBA.
Una secuencia de comandos de VBA apretón de manos
En este ejemplo, voy a crear un equipo en el que la aplicación de VBA escribe un archivo en el disco duro del ordenador local en el directorio c: apretón de manos temp cada 5 segundos. Entonces, el equipo de monitoreo remoto de forma remota comprobar que el directorio de vez en cuando para el archivo. Si el archivo existe, se lo eliminará (porque si el programa remoto está en funcionamiento, sólo se debe crear el archivo de nuevo). Si no existe el archivo, se emitirá una alerta de que la aplicación de dicho equipo ya no está en funcionamiento.
Vídeo: Monitoreo de aplicaciones con Application Insights
Esto es lo que parece.
En primer lugar, voy a mostrar cómo se puede agregar la secuencia de comandos de VBA en su aplicación de Office local que va a escribir el archivo de protocolo de enlace cada 5 segundos (si el archivo no existe ya).
En mi ejemplo, he creado dos pulsadores para mostrar cómo funciona el guión, pero en su aplicación que lanzaré el guión “Inicio apretón de manos”, cuando se inicia la aplicación. En Excel, esa es la -gt Hoja de trabajo; activar la función.
Antes de empezar con el script que va a escribir el archivo de Protocolo de enlace, es necesario activar la referencia Microsoft Scripting Runtime - esto permite que su aplicación VBA para acceder a las herramientas de manipulación de archivos de Windows. Puede acceder a este en el editor de VBA, haga clic en el -gt Herramientas; menú de referencias.
Sólo se desplaza hacia abajo, selecciona Microsoft Scripting Runtime, y ya está bueno para ir.
`En un horario regular, compruebe si el archivo de protocolo de enlace exists.`If no lo hace, escribir un nuevo file.`File se nombra con el ID de monitor de ordenador de manera sabe which`computer está teniendo una secuencia de comandos para comprobar regularmente problem.`Timer C: scripts apretón de manos para el INTTIME file.Dim Como IntegerDim sFile Como StringDim sPath Como StringDim SFname Como StringDim I como IntegerintTime = 5i = FreeFileTimerOn = = TruesFile "c: Temp MyComputerName.txt"Mientras Timeron = TrueIf Segundo (ahora) gt; (INTTIME + 5) o segundo (ahora) = 0 si el archivo no Then`Check exists`If, recrear ITIF Dir (sFile) = - Then`File no existe, recrear itMsgBox "creado"Abra sFile Para salida como #iCloseEnd IfintTime = segunda láminas (ahora) ("sheet1").Distancia("A1") .Value = TimeEnd IfDoEventsWend
Este script sólo tiene 16 líneas si no se cuentan las definiciones de variables, que es un script sencillo! Todo lo que hace es establece un bucle temporizador que se ejecuta cada 5 segundos. Se comprueba si existe el archivo apretón de manos. Si no lo hace, se vuelve a crear el archivo.
Si se piensa en ello, esta es una manera simple y creativo para decirle al mundo que la aplicación está vivo y funcionando. Te voy a enseñar lo que quiero decir. Cuando hago clic en el botón “Inicio apretón de manos” y luego vaya al directorio C: apretón de manos temp , 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 guión, puedo eliminar manualmente el archivo de texto desde el directorio.
Unos segundos más tarde, el archivo vuelve a aparecer de nuevo.
Vídeo: Curso VBA Excel
Eso significa que en este momento, nadie ni nada externo a su aplicación puede comprobar si su programa está abierto mediante la supresión de ese archivo y luego la comprobación para ver si el archivo vuelve a aparecer. Simple - pero eficiente!
Creación de una secuencia de supervisión remota
Ahora que tiene la secuencia de comandos de VBA apretón de manos que se ejecuta en todas las aplicaciones remotas, tendrá que crear un programa que se ejecuta en el centro de algún servidor, o tal vez en su propia PC de trabajo, que va hacia fuera y vigila 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 GUI front-end. Todo lo que desea que el script que hacer es darle una alerta cuando alguna de las aplicaciones remotas dejar de correr. La herramienta perfecta para esta aplicación es script de Windows. Basta con crear un nuevo archivo de texto llamado handshaking.wsf y pegar el siguiente script.
Opción ExplicitOn Error Resume NextDim strHostDim strComputerNameDim ReturnCodeDim strLineDim ShellDim oFSo, sFile, objArchivo, sTextDim oFSO2, sFile2, oFile2, sText2Dim strFailedListSet Shell = WScript.CreateObject ("wscript.shell") Set oFSo = CreateObject ("Scripting.FileSystemObject") Ajuste oFSO2 = CreateObject ("Scripting.FileSystemObject") SFile = " MyComputerName c $ users propietario scripts apretón de manos terminallist.ini"strFailedList = ""Si oFSO.FileExists (sFile) ThenSet objArchivo = oFSO.OpenTextFile (sFile, 1) Hacer mientras que no oFile.AtEndOfStreamsText = oFile.ReadLineIf Trim (sText) lt; gt; - ThenstrComputerName = Trim (sText) sFile2 = "" & strComputerName & " C $ users propietario scripts apretón de manos " & strComputerName & ".TXT"
Si oFSO2.FileExists (sFile2), entonces
oFSO2.DeleteFile sFile2, True
ElseWScript.Echo strComputerName & " no se está ejecutando el software!"Fin IfEnd IfLoopoFile.CloseElseWScript.Echo "El archivo no estaba allí."Fin ifset Shell = NothingSet oFSo = NothingWScript.Quit
Este script utiliza el subsistema de archivos de Windows para abrir primero el archivo “terminallist.ini”, que básicamente tiene todos los archivos de ordenador remoto que está tratando de acceder. En este caso, para mi prueba, que cuenta con tres líneas que contienen MyComputerName, MyOtherComputer y YetAnotherComputer.
El script anterior pasará a su lista de ordenadores, acceso a la máquina remota usando la ruta de red (es necesario ser un administrador, obviamente), y si el archivo existe, se lo eliminará. Si no existe el archivo, se emitirá una alerta.
Correr mi script monitorización FSM, que no alertó en el primer equipo, debido a que se encuentra el archivo, pero sí alerta sobre los otros dos porque esas aplicaciones remotas no existen todavía, y no se están ejecutando.
Ahora, para asegurarse de que su software de monitorización funciona con regularidad a través de cheques y de que todos los equipos remotos se están ejecutando su programa, tendrá que configurar el guión anterior FSM como una tarea programada que se ejecuta cada 5 minutos.
Basta con crear una tarea en el servidor o su PC principal que apunta a la secuencia de comandos.
Y crear una programación indefinida que se ejecuta la secuencia de comandos de supervisión cada 5 minutos.
Ahora, con sólo estos dos guiones simples - un fragmento de código VBA incrustado en cualquiera de los programas de Office existentes, y una secuencia de comandos de Windows que supervisa constantemente los programas a distancia - se le avisará al instante el momento en que alguien se cierra ese programa a distancia o el PC se apaga o el programa muere por cualquier motivo.
Si está trabajando en un entorno Windows y ha creado una gran cantidad de aplicaciones críticas con software de Office, esta técnica es un (gratis!) De forma muy rápida y barata para supervisar de forma remota todas esas aplicaciones críticas.
Darle un tiro y quiero saber cómo funcionaba para usted? que fueron capaces de impresionar a todos sus compañeros con la rapidez con que sabía siempre que uno de sus sistemas fue abajo? Compartir sus pensamientos y experiencias en la sección de comentarios.