Monitora se le tue app VBA sono in esecuzione con questo script slick
Lascia che ti dipinga uno scenario per te. Supponiamo che tu abbia creato una presentazione Powerpoint a scorrimento che desideri visualizzare in modo permanente su un grande schermo TV al lavoro. Oppure, potresti avere un'applicazione Excel che include un modulo di immissione per i tuoi dipendenti per digitare le informazioni in un database.
Ci sono molti motivi per cui potresti voler monitorare se un'applicazione è in esecuzione su qualche computer remoto. Questo potrebbe sembrare un complicato requisito di alto livello che ti servirà un esperto IT per aiutarti, ma sono qui per dirti che questo è un compito che puoi svolgere da solo.
Ti sei fidato di noi per mostrarti come eseguire altre attività apparentemente complicate con VBA, come inviare email da Excel Come inviare email da un foglio di calcolo Excel usando gli script VBA Come inviare email da un foglio di calcolo Excel usando gli script VBA Il nostro modello di codice aiuta a configurare e-mail automatizzate da Excel utilizzando Collaboration Data Objects (CDO) e script VBA. Per saperne di più, passare le informazioni agli appunti di Windows Passare qualsiasi informazione tra le applicazioni VBA utilizzando gli Appunti Passare qualsiasi informazione tra le applicazioni VBA utilizzando gli Appunti Una delle parti più frustranti del lavoro con VBA all'interno di applicazioni specifiche, è che non è sempre facile ottenere due applicazioni a “parlare” a vicenda. Puoi provare per transazioni molto veloci ... Leggi di più e integra Excel Come integrare i dati di Excel in un documento Word Come integrare i dati di Excel in un documento Word Durante la settimana lavorativa, ci sono probabilmente molte volte in cui ti ritrovi a copiare e incollare informazioni da Excel in Word o viceversa. Questo è il modo in cui le persone spesso producono rapporti scritti ... Leggi altri dati in un documento Word.
Ora, tutte queste cose erano relativamente passive. L'invio di e-mail o il passaggio di dati da un'applicazione a un'altra su un computer è una cosa, ma in questo caso monitoreremo un'applicazione in esecuzione su un computer, con un'altra applicazione in esecuzione su un computer remoto. È possibile - fidati di me.
Un sistema di monitoraggio delle applicazioni remote
Questo è fondamentalmente un sistema che può trasformarti in un eroe al lavoro con poche semplici righe di codice su entrambe le estremità del setup.
Come sarà la configurazione? Fondamentalmente, questa configurazione può funzionare con più sistemi di computer remoti che potrebbero visualizzare qualcosa su un grande schermo TV, o eseguire una schermata di immissione dati Excel, o qualsiasi altra cosa che sia un'applicazione Office con VBA.
Uno script VBA Handshaking
Nell'esempio qui, creerò un computer in cui l'applicazione VBA scrive un file sul disco rigido del computer locale nella directory c: \ temp \ handshake \ ogni 5 secondi. Quindi, il computer di monitoraggio remoto controllerà a distanza tale directory ogni tanto per il file. Se il file esiste, lo eliminerà (perché se il programma remoto è in esecuzione, dovrebbe semplicemente ricreare di nuovo il file). Se il file non esiste, emetterà un avviso che l'applicazione su quel computer non è più in esecuzione.
Ecco come si presenta.
Per prima cosa, ti mostrerò come puoi aggiungere lo script VBA all'applicazione Office locale che scriverà il file di handshaking ogni 5 secondi (se il file non esiste già).
Nel mio esempio, ho creato due pulsanti per mostrarvi come funziona lo script, ma nella vostra applicazione si avvia il “Inizia Handshaking” script all'avvio dell'applicazione. In Excel, questo è il foglio di lavoro -> funzione di attivazione.
Prima di iniziare con lo script che scriverà il file di handshaking, è necessario attivare il riferimento di Microsoft Scripting Runtime, che consente all'app VBA di accedere agli strumenti di manipolazione dei file di Windows. È possibile accedere a questo nell'editor VBA, facendo clic sul menu Strumenti -> Riferimenti.
Basta scorrere verso il basso, selezionare Microsoft Scripting Runtime, e sei a posto.
'A intervalli regolari, controlla se il file di handshaking esiste. 'In caso contrario, scrivi un nuovo file. 'Il file è denominato con l'ID del computer in modo che il monitor sappia quale' computer ha un problema. 'Script timer per controllare regolarmente c: \ scripts \ handshake \ per il file. Dim intTime As Integer Dim sFile As String Dim sPath As String Dim SFname As String Dim i As Intero intTime = 5 i = FreeFile TimerOn = True sFile = "c: \ Temp \ MyComputerName.txt" While TimerOn = True If Second (Now) > (intTime + 5) Or Second (Now) = 0 Quindi 'Controlla se il file esiste' In caso contrario, ricreala Se Dir (sFile) = - Quindi 'File non esiste, ricrealo MsgBox "creato" Apri sFile For Output Come #i Chiudi Fine se intTime = Secondo (Adesso) Fogli ("foglio1"). Intervallo ("a1"). Valore = Tempo Fine Se DoEvents Wend
Questo script ha solo 16 righe se non si contano le definizioni delle variabili, questo è uno script semplice! Tutto ciò che fa è impostare un ciclo del timer che viene eseguito ogni 5 secondi. Controlla se esiste il file di handshaking. In caso contrario, ricrea il file.
Se ci pensi, questo è un modo semplice e creativo per dire al mondo che l'applicazione è viva e funzionante. Lascia che ti mostri cosa intendo. Quando clicco sul “Inizia Handshaking” pulsante e poi andare alla directory c: \ temp \ handshaking \, posso vedere che il mio script VBA ha creato il nuovo file. È un file vuoto, ma non importa: ciò che conta è che il file esista.
Per testare il mio script, elimino manualmente il file di testo dalla directory.
Pochi secondi dopo, il file riappare nuovamente.
Ciò significa che a questo punto, chiunque o qualsiasi cosa esterna alla tua applicazione può verificare se il tuo programma è aperto o meno cancellando quel file e poi controllando se il file riappare. Semplice, ma efficiente!
Creazione di uno script di monitoraggio remoto
Ora che hai lo script di handshaking VBA in esecuzione su tutte le tue applicazioni remote, ti consigliamo di creare un programma centrale in esecuzione su alcuni server, o magari sul tuo PC di lavoro, che esce e controlla se quelle app remote sono in esecuzione.
Il modo migliore per farlo è con uno script che viene eseguito in background senza un front-end della GUI. Tutto quello che vuoi che lo script faccia è dare un avviso quando una qualsiasi delle applicazioni remote smette di funzionare. Lo strumento perfetto per questa app è lo script di Windows. Basta creare un nuovo file di testo chiamato handshaking.wsf e incollare il seguente script.
Opzione Especifica On Errore Riprendi Avanti 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") Imposta oFSO = CreateObject ("Scripting.FileSystemObject") Imposta oFSO2 = CreateObject ("Scripting.FileSystemObject") sFile = "\\ MyComputerName \ c $ \ users \ owner \ scripts \ handshaking \ terminallist.ini" strFailedList = "" Se oFSO.FileExists ( sFile) Quindi imposta oFile = oFSO.OpenTextFile (sFile, 1) Do While o oFile.AtEndOfStream sText = oFile.ReadLine If Trim (sText) <> - Then strComputerName = Trim (sText) sFile2 = "\\" & strComputerName & " \ c $ \ users \ owner \ scripts \ handshaking \ "& strComputerName &" .txt "
Se oFSO2.FileExists (sFile2) Quindi
oFSO2.DeleteFile sFile2, True
Altrimenti WScript.Echo strComputerName & "non sta eseguendo il software!" End If End If Loop oFile.Close Else WScript.Echo "Il file non era lì." End If Set Shell = Nothing Set oFSO = Nothing WScript.Quit
Questo script utilizza il sottosistema File di Windows per aprire prima il file “terminallist.ini” file, che in pratica ha tutti i file del computer remoto a cui stai tentando di accedere. In questo caso, per il mio test, ha tre righe contenenti MyComputerName, MyOtherComputer e YetAnotherComputer.
Lo script sopra farà scendere il tuo elenco di computer, accedere alla macchina remota usando il percorso di rete (devi essere un amministratore, ovviamente), e se il file esiste, lo cancellerà. Se il file non esiste, emetterà un avviso.
Eseguendo il mio script di monitoraggio WSF, non ha allertato sul primo computer, perché il file è stato trovato, ma ha allertato sugli altri due perché quelle applicazioni remote non esistono ancora e non sono in esecuzione.
Ora, per assicurarti che il tuo software di monitoraggio venga eseguito regolarmente e controlli che tutti i tuoi computer remoti stiano eseguendo il tuo programma, dovrai configurare lo script WSF sopra come un'attività pianificata che viene eseguita ogni 5 minuti.
Basta creare un'attività sul tuo server o sul tuo PC principale che punti allo script.
E creare una pianificazione indefinita che esegua lo script di monitoraggio ogni 5 minuti.
Ora, con questi due semplici script, uno snippet VBA incorporato in uno qualsiasi dei tuoi programmi Office esistenti e uno script Windows che monitora costantemente i programmi remoti, verrai avvisato immediatamente nel momento in cui qualcuno chiude quel programma remoto o il PC si spegne , o il programma muore per qualsiasi motivo.
Se stai lavorando in un ambiente Windows e hai creato molte applicazioni critiche utilizzando il software Office, questa tecnica è un modo molto veloce ed economico (gratuito!) Per monitorare da remoto tutte quelle app critiche.
Fai un tentativo e fammi sapere come ha funzionato per te? Sei riuscito a stupire tutti i tuoi colleghi con la rapidità con cui hai saputo quando uno dei tuoi sistemi era fuori uso? Condividi i tuoi pensieri ed esperienze nella sezione commenti qui sotto.
Crediti immagine: Young Man Pointing at Computer tramite Shutterstock
Scopri di più su: Programmazione, programmazione Visual Basic.