Overvåk Hvis VBA Apps kjører med dette slick-skriptet
La meg male et scenario for deg. La oss si at du har opprettet en rullende Powerpoint lysbildeserie som du vil vise permanent på en stor TV-skjerm på jobben. Eller kanskje du har et Excel-program som inneholder en opptaksformular for dine arbeidere å skrive inn informasjon i en database.
Det er mange grunner til at du kanskje vil overvåke om et program kjører på en ekstern datamaskin. Dette kan høres ut som et komplisert krav på høyt nivå at du trenger en IT-ekspert for å hjelpe deg, men jeg er her for å fortelle deg at dette er en oppgave du kan oppnå selv.
Du har klarert oss å vise deg hvordan du gjør andre tilsynelatende kompliserte oppgaver med VBA før, for eksempel å sende e-poster fra Excel. Slik sender du e-post fra et Excel-regneark ved hjelp av VBA-skript. Slik sender du e-post fra et Excel-regneark ved hjelp av VBA-skript. Vår kodemal vil hjelper deg med å konfigurere automatiserte e-poster fra Excel ved hjelp av samarbeidsdataobjekter (CDO) og VBA-skript. Les mer, passere informasjon til Windows utklippstavle Passer alle opplysninger mellom VBA-applikasjoner ved hjelp av utklippstavlen Passer alle opplysninger mellom VBA-programmer ved hjelp av utklippstavlen En av de mest frustrerende delene av å jobbe med VBA i bestemte applikasjoner, er at det ikke alltid er lett å få to søknader til “snakke” til hverandre. Du kan prøve for svært raske transaksjoner ... Les mer og integrere Excel Slik integrerer du Excel-data i et Word-dokument Slik integrerer du Excel-data i et Word-dokument I arbeidsdagen din er det sannsynligvis mange ganger du finner deg selv å kopiere og lime inn informasjon fra Excel til Word, eller omvendt. Slik produserer folk ofte skrevet rapporter ... Les mer data i et Word-dokument.
Nå var alle disse tingene relativt passive. Å sende e-post eller sende data fra ett program til et annet på en datamaskin er en ting, men i dette tilfellet skal vi overvåke ett program som kjører på en datamaskin, med et annet program som kjører på en ekstern datamaskin. Det er mulig - stol på meg.
Et eksternt programovervåkingssystem
Dette er i utgangspunktet et system som kan gjøre deg til en helt på jobb med bare noen få enkle linjer med kode på begge ender av oppsettet.
Hva ser oppsettet ut? I utgangspunktet kan dette oppsettet fungere med flere fjerntliggende datasystemer som kan vise noe på en stor TV-skjerm, eller kjøre en Excel-dataregistreringsskjerm eller noe annet som er et Office-program med VBA.
Et Handshaking VBA Script
I eksemplet her skal jeg lage en datamaskin der VBA-programmet skriver en fil til den lokale harddisken i katalogen c: \ temp \ handshaking \ hvert 5. sekund. Deretter fjernkontrollen datamaskinen fjernkontrollen sjekke den katalogen så ofte for filen. Hvis filen eksisterer, vil den slette den (fordi hvis fjernprogrammet kjører, bør det bare gjenskape filen igjen). Hvis filen ikke eksisterer, vil den utgjøre et varsel om at programmet på den datamaskinen ikke lenger kjører.
Her ser det ut som det ser ut.
Først skal jeg vise deg hvordan du kan legge til VBA-skriptet på ditt lokale Office-program som vil skrive handshaking-filen hvert 5. sekund (hvis filen ikke eksisterer allerede).
I mitt eksempel skapte jeg to trykknapper for å vise hvordan skriptet fungerer, men i programmet vil du starte “Start Handshaking” Skript når programmet starter. I Excel er det regnearket -> Aktiver funksjon.
Før du kommer i gang med skriptet som vil skrive handshaking-filen, må du aktivere Microsoft Scripting Runtime-referansen - dette gjør at VBA-appen din kan få tilgang til Window's filhåndteringsverktøy. Du kan få tilgang til dette i VBA-editoren, og klikk på Verktøy -> Referanser-menyen.
Bare bla ned, velg Microsoft Scripting Runtime, og du er god til å gå.
'Kontroller regelmessig om handshaking-filen eksisterer. 'Hvis det ikke gjør det, skriv en ny fil. 'Filen er navngitt med datamaskin-IDen, slik at skjermen vet hvilken datamaskin har et problem. 'Timer script for jevnlig å sjekke c: \ scripts \ handshake \ for filen. Dim intTime As Integer Dim sFile Som String Dim sPath Som String Dim SFname Som String Dim I Som Integer intTime = 5 I = FreeFile TimerOn = True sFile = "c: \ Temp \ MyComputerName.txt" Mens TimerOn = True If Second (Now) > (intTime + 5) Eller Second (Now) = 0 Then 'Sjekk om filen eksisterer' Hvis ikke, gjenskap det hvis Dir (sFile) = - Deretter 'File eksisterer ikke, gjenskap det MsgBox "created" Åpne sFile For Output Som #i Lukk ende Hvis intTime = Second (Now) Sheets ("sheet1"). Område ("a1"). Verdi = Tidsavslutning Hvis DoEvents Wend
Dette skriptet har bare 16 linjer hvis du ikke teller variabeldefinisjonene, det er et enkelt skript! Alt det gjør er å sette opp en tidsursløyfe som går hvert 5. sekund. Det kontrollerer om handshaking-filen eksisterer. Hvis det ikke gjør det, gjenoppretter det filen.
Hvis du tenker på det, er dette en enkel, kreativ måte å fortelle verden at programmet lever og kjører. La meg vise deg hva jeg mener. Når jeg klikker på “Start Handshaking” knappen og deretter til katalogen c: \ temp \ handshaking \ kan jeg se at mitt VBA-skript har opprettet den nye filen. Det er en tom fil, men det spiller ingen rolle - det som betyr noe er at filen eksisterer.
For å teste skriptet, sletter jeg tekstfilen manuelt fra katalogen.
Noen få sekunder senere vises filen igjen.
Det betyr at på dette tidspunktet kan noen eller noe som er eksternt for søknaden sjekke om programmet ditt er åpent ved å slette den filen og deretter sjekke om filen vises. Enkel - men effektiv!
Opprette et Remote Monitoring Script
Nå som du har VBA handshaking-skriptet som kjører på alle dine fjernprogrammer, vil du opprette et sentralt program som kjører på noen server, eller kanskje på din egen arbeids-PC, som går ut og overvåker om de eksterne appene kjører.
Den beste måten å gjøre dette på er med et skript som kjører i bakgrunnen uten en GUI-frontend. Alt du vil at skriptet skal gjøre er å gi deg et varsel når noen av de eksterne programmene slutter å løpe. Det perfekte verktøyet for denne appen er Windows-skript. Bare opprett en ny tekstfil kalt handshaking.wsf og lim inn følgende skript.
Alternativ Eksplisitt På Feil Fortsett Neste Dim StrHost Dim StrComputerName Dim ReturnCode Dim StrLine Dim Shell Dim oFSO, sFile, oFile, sText Dim oFSO2, sFile2, oFile2, sText2 Dim strFailedList Sett Shell = wscript.createObject ("wscript.shell") Angi oFSO = CreateObject ("Scripting.FileSystemObject") Angi oFSO2 = CreateObject ("Scripting.FileSystemObject") sFile = "\\ MyComputerName \ c $ \ users \ owner \ scripts \ handshaking \ terminallist.ini" strFailedList = "" Hvis oFSO.FileExists sFile) Sett deretter oFile = oFSO.OpenTextFile (sFile, 1) Gjør mens ikke oFile.AtEndOfStream sText = oFile.ReadLine Hvis Trim (sText) <> - så strComputerName = Trim (sText) sFile2 = "\\" & strComputerName & " \ c $ \ users \ owner \ scripts \ handshaking \ "& strComputerName &" .txt "
Hvis oFSO2.FileExists (sFile2) deretter
oFSO2.DeleteFile sFile2, True
Else WScript.Echo strComputerName & "kjører ikke programvaren!" Slutt hvis slutt hvis Loop oFile.Close Else WScript.Echo "Filen var ikke der." Slutt hvis Set Shell = Ingenting Angi oFSO = Ingenting WScript.Quit
Dette skriptet bruker Windows Fil-delsystem for å først åpne “terminallist.ini” fil, som i utgangspunktet har alle de eksterne datafilene du prøver å få tilgang til. I dette tilfellet, for min test, har den tre linjer som inneholder MyComputerName, MyOtherComputer, og YetAnotherComputer.
Skriptet ovenfor vil gå ned i listen over datamaskiner, få tilgang til den eksterne maskinen ved hjelp av nettverksbanen (du må være administrator, åpenbart), og hvis filen eksisterer, vil den slette den. Hvis filen ikke eksisterer, vil den gi et varsel.
Kjører WSF-overvåkingsskriptet, det var ikke våken på den første datamaskinen, fordi filen ble funnet, men det varslet på de andre to fordi disse eksterne applikasjonene ikke eksisterer ennå, og kjører ikke.
For å sikre at overvåkingsprogramvaren jevnlig går gjennom og kontrollerer at alle dine eksterne datamaskiner kjører programmet, må du sette opp WSF-skriptet ovenfor som en planlagt oppgave som går hvert 5. minutt.
Bare opprett en oppgave på serveren din eller din hoved PC som peker på skriptet.
Og lag en ubestemt tidsplan som kjører ditt overvåkingsskript hvert 5. minutt.
Nå, med bare disse to enkle skriptene - en VBA-kode som er innebygd i noen av de eksisterende Office-programmene, og et Windows-skript som kontinuerlig overvåker disse eksterne programmene - du vil bli varslet umiddelbart når et øyeblikk lukkes det fjernprogrammet eller PCen slår av , eller programmet dør av hvilken som helst grunn.
Hvis du jobber i et Windows-miljø og har opprettet mange kritiske applikasjoner ved hjelp av Office-programvare, er denne teknikken en veldig rask og billig (gratis!) Måte å eksternt overvåke alle de kritiske appene på.
Gi det et skudd og gi meg beskjed om hvordan det virket for deg? Var du i stand til å imponere alle dine kolleger med hvor raskt du visste når et av systemene dine var nede? Del dine tanker og erfaringer i kommentarfeltet nedenfor.
Image Credits: Ung mann peker på datamaskinen via Shutterstock
Utforsk mer om: Programmering, Visual Basic Programmering.