Monitor dacă aplicațiile dvs. VBA se execută cu acest script Slick

Monitor dacă aplicațiile dvs. VBA se execută cu acest script Slick / ferestre

Permiteți-mi să pictez un scenariu pentru tine. Să presupunem că ați creat o prezentare de diapozitive Powerpoint pe care doriți să o afișați permanent pe un ecran mare de la serviciu. Sau, poate aveți o aplicație Excel care include un formular de înscriere pentru lucrătorii dvs. pentru a introduce informații într-o bază de date.

Există o mulțime de motive pentru care este posibil să doriți să monitorizați dacă o aplicație rulează pe un computer la distanță. Acest lucru poate părea o cerință complexă la nivel înalt că veți avea nevoie de un expert IT care să vă ajute, dar sunt aici să vă spun că aceasta este o sarcină pe care o puteți realiza.

Aveți încredere în noi să vă arătăm cum să facem alte sarcini aparent complicate cu VBA înainte, cum ar fi trimiterea de e-mailuri din Excel Cum să trimiteți e-mailuri dintr-o foaie de calcul Excel Folosind script-uri VBA Cum să trimiteți e-mailuri dintr-o foaie de calcul Excel utilizând șabloanele VBA vă ajută să creați e-mailuri automate din cadrul Excel folosind Collaboration Data Objects (CDO) și script-uri VBA. Citeste mai mult, trecerea informatiei in clipboard-ul Windows Treci orice informatie intre aplicatiile VBA Utilizand Clipboard-ul Treci orice informatie intre aplicatiile VBA Folosind Clipboard-ul Una dintre cele mai frustrante parti ale lucrului cu VBA in aplicatii specifice este ca nu este intotdeauna usor sa obtii doua aplicații la “vorbi” unul altuia. Puteți încerca tranzacții foarte rapide ... Citiți mai multe și integrați Excel Cum să integrați datele Excel într-un document Word Cum să integrați datele Excel într-un document Word În timpul săptămânii de lucru, există probabil că de multe ori vă găsiți copierea și lipirea informații de la Excel în Word sau invers. Acesta este modul în care oamenii produc adesea rapoarte scrise ... Citiți mai multe date într-un document Word.

Acum, toate aceste lucruri erau relativ pasive. Trimiterea de e-mailuri sau transmiterea de date de la o aplicație la alta pe un computer este un lucru, dar în acest caz vom monitoriza o aplicație care rulează pe un singur computer, cu o altă aplicație care rulează pe un computer la distanță. E posibil - crede-mă.

Un sistem de monitorizare a aplicațiilor la distanță

Acesta este în esență un sistem care vă poate transforma într-un erou la lucru cu doar câteva linii simple de cod la ambele capete ale setării.

Cum va arata configuratia? Practic, această configurație poate funcționa cu mai multe sisteme de computer la distanță care ar putea afișa ceva pe un ecran mare de televiziune sau care rulează un ecran de introducere a datelor Excel sau orice altceva care este o aplicație Office cu VBA.

Un script VBA pentru Handshaking

În exemplul de aici, voi crea un computer în care aplicația VBA scrie un fișier pe hard diskul computerului local din directorul c: \ temp \ handshaking \ la fiecare 5 secunde. Apoi, computerul de monitorizare de la distanță va verifica de la distanță directorul de fiecare dată atât de des pentru fișier. Dacă fișierul există, îl va șterge (pentru că dacă programul de la distanță rulează, ar trebui să recreeze din nou fișierul). Dacă fișierul nu există, acesta va emite o avertizare că aplicația de pe computerul respectiv nu mai funcționează.

Iată cum arată asta.

În primul rând, vă voi arăta cum puteți adăuga scriptul VBA în aplicația dvs. locală care va scrie fișierul de strângere de mână la fiecare 5 secunde (dacă fișierul nu există deja).

În exemplul meu, am creat două butoane pentru a vă arăta cum funcționează scriptul, dar în aplicația dvs. veți lansa “Porniți Handshaking” script atunci când începe aplicația. În Excel, aceasta este funcția Foaie de lucru -> Activare.

Înainte de a începe cu scriptul care va scrie fișierul handshaking, trebuie să activați referința Microsoft Scripting Runtime - aceasta permite aplicației dvs. VBA să acceseze instrumentele de manipulare a fișierelor Window. Puteți accesa acest lucru în editorul VBA, făcând clic pe meniul Instrumente -> Referințe.

Doar derulați în jos, selectați Microsoft Scripting Runtime și sunteți bine să mergeți.

'Într-un program regulat, verificați dacă există fișierul handshaking. "Dacă nu, scrieți un nou fișier. "Fișierul este denumit cu ID-ul computerului, astfel încât monitorul știe care" computer are o problemă. 'Timer script pentru a verifica în mod regulat c: \ scripts \ handshake \ pentru fișier. Dim intTime ca integer Dim sFile ca șir de dimensiune sPath Ca șir de dimensiune SFN ca șir Dim i ca int inteme = 5 i = FreeFile TimerOn = Adevărat sFile = "c: \ Temp \ MyComputerName.txt" În timp ce TimerOn = > (intTime + 5) sau Second (Now) = 0 Apoi 'Verificați dacă există fișier' Dacă nu, recreați-l dacă Dir (sFile) = - Apoi fișierul nu există, recreează MsgBox " Deoarece #i Închideți sfârșitul Dacă intTime = Foaie secundare ("foaie1"). Interval ("a1") Valoare = Timpul final Dacă DoEvents Wend

Acest script are doar 16 linii dacă nu numărați definițiile variabilelor, acesta fiind un script simplu! Tot ceea ce face este să stabilească o buclă de timp ce rulează la fiecare 5 secunde. Verifică dacă există fișierul handshaking. În caz contrar, redarea fișierului.

Dacă vă gândiți la asta, acesta este un mod simplu, creativ de a spune lumii că aplicația este vie și care rulează. Lasă-mă să-ți arăt ce vreau să spun. Când fac clic pe “Porniți Handshaking” și apoi mergeți la directorul c: \ temp \ handshaking \, văd că scriptul VBA a creat noul fișier. Este un dosar gol, dar nu contează - ceea ce contează este că dosarul există.

Pentru a testa scriptul, șterg manual fișierul text din director.

Câteva secunde mai târziu, fișierul apare din nou.

Asta înseamnă că, în acest moment, oricine sau orice altceva decât aplicația dvs. poate verifica dacă programul dvs. este sau nu deschis prin ștergerea acelui fișier și apoi verificarea pentru a vedea dacă fișierul reapare. Simplu - dar eficient!

Crearea unui script de monitorizare la distanță

Acum, dacă aveți scriptul de handshaking VBA care rulează pe toate aplicațiile dvs. de la distanță, veți dori să creați un program central care rulează pe un anumit server sau poate pe propriul PC de lucru, care se stinge și monitorizează dacă aceste aplicații la distanță rulează.

Cea mai bună modalitate de a face acest lucru este cu un script care rulează în fundal fără un front-end GUI. Tot ce doriți ca scriptul să faceți este să vă avertizeze când oricare dintre aplicațiile de la distanță nu mai funcționează. Instrumentul perfect pentru această aplicație este scriptul Windows. Doar creați un nou fișier text numit handshaking.wsf și lipiți următorul script.

Opțiunea Explicit la eroare Reluați Următorul 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") Setare oFSO = CreateObject ("Scripting.FileSystemObject") Setați oFSO2 = CreateObject ("Scripting.FileSystemObject") sFile = "\\ MyComputerName \ c $ \ users \ owner \ scripts \ handshaking \ terminallist.ini" strFailedList = "Dacă oFSO.FileExists sFile) Apoi setați oFile = oFSO.OpenTextFile (sFile, 1) Dacă nu este oFile.AtEndOfStream sText = oFile.ReadLine Dacă Trim (sText) <> - Atunci strComputerName = Trim (sText) sFile2 = "\\" & strComputerName & \ c $ \ users \ owner \ scripturi \ handshaking \ "& strComputerName &" .txt "
 Dacă oFSO2.FileExists (sFile2) Apoi
 oFSO2.DeleteFile sFile2, Adevărat
 Else WScript.Echo strComputerName & "nu rulează software-ul!" Sfârșit Dacă Sfârșit Dacă Loop oFile.Close Else WScript.Echo "Fișierul nu a fost acolo." Sfârșit Dacă Set Shell = Nimic Setat oFSO = Nimic WScript.Quit

Acest script folosește subsistemul Fișier Windows pentru a deschide mai întâi “terminallist.ini” fișierul, care de fapt are toate fișierele de la distanță pe care încercați să le accesați. În acest caz, pentru testul meu, are trei linii care conțin MyComputerName, MyOtherComputer și YetAnotherComputer.

Script-ul de mai sus va coborî pe lista calculatoarelor, va accesa mașina de la distanță folosind calea de rețea (trebuie să fii evident un administrator) și dacă fișierul există, îl va șterge. Dacă fișierul nu există, va emite o alertă.

Dacă rulează scriptul de monitorizare WSF, nu a avertizat pe primul computer, deoarece fișierul a fost găsit, dar a făcut alertă asupra celorlalte două deoarece aceste aplicații la distanță nu există încă și nu rulează.

Acum, pentru a vă asigura că software-ul de monitorizare rulează în mod regulat și verifică dacă toate computerele de la distanță rulează programul dvs., va trebui să configurați scriptul WSF de mai sus ca o sarcină programată care rulează la fiecare 5 minute.

Doar creați o sarcină pe serverul dvs. sau pe PC-ul principal care indică scriptul.

Și creați un program nedefinit care rulează scriptul dvs. de monitorizare la fiecare 5 minute.

Acum, doar cu aceste două script-uri simple - un fragment VBA încorporat în oricare dintre programele dvs. Office existente și un Windows Script care monitorizează constant acele programe la distanță - veți fi alertat instantaneu în momentul în care cineva închide acel program la distanță sau PC-ul se oprește , sau programul moare pentru orice motiv.

Dacă lucrați într-un mediu Windows și ați creat o mulțime de aplicații critice utilizând software-ul Office, această tehnică este o modalitate foarte rapidă și ieftină (gratuit!) De a monitoriza de la distanță toate aceste aplicații critice.

Dați-i o șansă și spuneți-mi cum a fost făcut pentru dvs.? Ați reușit să-i impresionați pe toți colegii dvs. cu cât de repede ați știut de fiecare dată când unul dintre sistemele dvs. a scăzut? Împărtășiți-vă gândurile și experiențele în secțiunea de comentarii de mai jos.

Creditele de imagine: Tânărul care indică la computer prin Shutterstock

Explorați mai multe despre: Programare, Programare Visual Basic.