Övervaka om dina VBA-program körs med detta slick-skript
Låt mig måla ett scenario för dig. Låt oss säga att du har skapat ett rullningslista med Powerpoint som du vill visa permanent på en stor TV-skärm på jobbet. Eller kanske du har en Excel-applikation som innehåller en inmatningsblankett för dina arbetstagare att skriva in information i en databas.
Det finns många anledningar till varför du kanske vill övervaka om en applikation körs på en fjärrdator. Det kan låta som ett komplicerat krav på hög nivå att du behöver en IT-expert som hjälper dig med, men jag är här för att berätta att det här är en uppgift du kan utföra själv.
Du har lärt oss att visa dig hur du gör andra till synes komplicerade uppgifter med VBA innan du skickar e-post från Excel. Så skickar du e-postmeddelanden från ett Excel-kalkylblad med VBA-skript. Så skickar du e-postmeddelanden från ett Excel-kalkylblad med hjälp av VBA-skript. Vår kodmall kommer att hjälper dig att ställa in automatiserade e-postmeddelanden från Excel med hjälp av Collaboration Data Objects (CDO) och VBA-skript. Läs mer, skicka information till Windows Urklipp. Passa någon information mellan VBA-applikationer med Urklipp. Passera eventuell information mellan VBA-program med Urklipp En av de mest frustrerande delarna av att arbeta med VBA inom specifika applikationer är att det inte alltid är lätt att få två ansökningar till “prata” till varandra. Du kan försöka med mycket snabba transaktioner ... Läs mer och integrera Excel Så här integrerar du Excel-data i ett Word-dokument Hur man integrerar Excel-data i ett Word-dokument Under din arbetsvecka finns det förmodligen många gånger du tycker om att kopiera och klistra in information från Excel till Word, eller omvänd. Så här producerar man ofta skrivna rapporter ... Läs mer data i ett Word-dokument.
Nu var alla dessa saker relativt passiva. Att skicka e-post eller skicka data från en applikation till en annan på en dator är en sak, men i det här fallet kommer vi att övervaka en applikation som körs på en dator, med en annan applikation som körs på en fjärrdator. Det är möjligt - lita på mig.
Ett fjärrprogramövervakningssystem
Detta är i grunden ett system som kan göra dig till en hjälte på jobbet med bara några enkla linjer med kod i båda ändarna av inställningen.
Hur ser inställningen ut? I grund och botten kan den här inställningen fungera med flera fjärrdatorsystem som kan visa någonting på en stor TV-skärm, eller köra en Excel-datainmatningsskärm eller något annat som är ett Office-program med VBA.
En Handshaking VBA Script
I exemplet här kommer jag att skapa en dator där VBA-programmet skriver en fil till den lokala datorns hårddisk i katalogen c: \ temp \ handshaking \ var 5: e sekund. Därefter kommer fjärrövervakningsdatorn fjärrkontrollera den katalogen så ofta för filen. Om filen finns kommer den att radera den (för om fjärrprogrammet körs, ska det bara återskapa filen igen). Om filen inte existerar kommer det att utgå en varning om att programmet på den datorn inte längre körs.
Så här ser det ut.
Först ska jag visa dig hur du kan lägga till VBA-skriptet på din lokala Office-applikation som kommer att skriva handskakningsfilen var 5: e sekund (om filen inte existerar redan).
I mitt exempel skapade jag två knappar för att visa hur skriptet fungerar, men i din applikation startar du “Börja Handskakning” skript när programmet startar. I Excel är det arbetsbladet -> Aktivera funktionen.
Innan du börjar med skriptet som ska skriva handskakningsfilen måste du aktivera Microsoft Scripting Runtime-referensen - det här låter din VBA-app få tillgång till Window-verktyg för filhantering. Du kan komma åt detta i VBA-editoren, klicka på menyn Verktyg -> Referenser.
Bläddra bara ner, välj Microsoft Scripting Runtime, och du är bra att gå.
'Kontrollera regelbundet om handskakningsfilen finns. 'Om det inte gör det, skriv en ny fil. "Filen heter med datorns ID, så att övervaka vet vilken dator som har ett problem. 'Timer script för att regelbundet kontrollera c: \ scripts \ handshake \ för filen. Dim intTime As Integer Dim sFile As String Dim sPath Som String Dim SFname As String Dim I som helhet intTime = 5 i = FreeFile TimerOn = True sFile = "c: \ Temp \ MyComputerName.txt" Medan TimerOn = True If Second (Now) > (intTime + 5) Eller Second (Now) = 0 Då 'Kontrollera om filen existerar' Om inte, gör om det om Dir (sFile) = - Då 'Filen finns inte, återskapa den MsgBox "skapad" Öppna sFile För Output Som #i nära slutet Om intTime = Second (Now) Sheets ("sheet1"). Räckvidd ("a1"). Värde = Time End Om DoEvents Wend
Detta skript har bara 16 linjer om du inte räknar variabeldefinitionerna, det är ett enkelt skript! Allt det gör är att sätta upp en timer-slinga som löper var 5: e sekund. Det kontrollerar om handskakningsfilen finns. Om det inte gör det återskapar filen.
Om du funderar på det är det här ett enkelt och kreativt sätt att berätta för världen att applikationen lever och körs. Låt mig visa dig vad jag menar. När jag klickar på “Börja Handskakning” knappen och sedan gå till katalogen c: \ temp \ handshaking \ kan jag se att mitt VBA-skript har skapat den nya filen. Det är en tom fil, men det spelar ingen roll - det som är viktigt är att filen finns.
För att testa mitt skript raderar jag manuellt textfilen från katalogen.
Några sekunder senare visas filen igen.
Det betyder att nu eller någon annan som är extern för din ansökan kan kontrollera om programmet är öppet genom att ta bort den filen och sedan kontrollera om filen visas igen. Enkelt - men ändå effektivt!
Skapa ett Remote Monitoring Script
Nu när du har ditt VBA handshaking-skript som körs på alla dina fjärranslutna applikationer, vill du skapa ett centralt program som körs på någon server, eller kanske på din egen arbets-dator, som går ut och övervakar om fjärrprogrammen körs.
Det bästa sättet att göra detta är med ett skript som körs i bakgrunden utan ett GUI-front-end. Allt du vill att skriptet ska göra är att ge dig en varning när någon av de fjärranslutna programmen slutar springa. Det perfekta verktyget för den här appen är Windows-skript. Skapa bara en ny textfil kallad handshaking.wsf och klistra in följande skript.
Alternativ Väsentligt om fel Fortsätt Nästa Dim StrHost Dim StrComputerName Dim ReturnCode Dim StrLine Dim Shell Dim OFSO, sFile, oFile, sText Dim oFSO2, sFile2, oFile2, sText2 Dim strFailedList Ställ Shell = wscript.createObject ("wscript.shell") Ställ oFSO = CreateObject ("Scripting.FileSystemObject") Ange oFSO2 = CreateObject ("Scripting.FileSystemObject") sFile = "\\ MyComputerName \ c $ \ users \ owner \ scripts \ handskakning \ terminallist.ini" strFailedList = "" Om oFSO.FileExists sFile) sedan Ställ in oFile = oFSO.OpenTextFile (sFile, 1) Gör medan inte oFile.AtEndOfStream sText = oFile.ReadLine Om Trim (sText) <> - Då strComputerName = Trim (sText) sFile2 = "\\" & strComputerName & " \ c $ \ users \ owner \ scripts \ handshaking \ "& strComputerName &" .txt "
Om oFSO2.FileExists (sFile2) sedan
oFSO2.DeleteFile sFile2, True
Annars WScript.Echo strComputerName & "kör inte programvaran!" Avsluta om sluta om Loop oFile.Close Else WScript.Echo "Filen var inte där." Avsluta om set Shell = Inget Ange oFSO = Inget WScript.Quit
Detta skript använder Windows-filens delsystem för att först öppna “terminallist.ini” fil, som i grunden har alla fjärrdatorfiler du försöker få åtkomst till. I det här fallet har det för mitt test tre linjer som innehåller MyComputerName, MyOtherComputer och YetAnotherComputer.
Skriptet ovan kommer att gå ner i din lista över datorer, få tillgång till fjärrmaskinen med nätverksbanan (du måste vara en administratör självklart) och om filen finns kommer den att radera den. Om filen inte existerar kommer den att utgå en varning.
När jag körde över mitt WSF-övervakningsskript larmade den inte på den första datorn, eftersom filen hittades, men det varnade på de andra två eftersom de fjärranslutna programmen inte existerar och kör inte.
För att se till att din övervakningsprogram löper regelbundet och kontrollerar att alla fjärrdatorer kör ditt program, måste du konfigurera WSF-skriptet ovan som en schemalagd uppgift som körs var 5: e minut.
Skapa bara en uppgift på din server eller din huvud-dator som pekar på skriptet.
Och skapa ett obestämt schema som kör ditt övervakningsskript var 5: e minut.
Nu, med bara dessa två enkla skript - ett VBA-snipp som är inbäddat i något av dina befintliga Office-program och ett Windows Script som ständigt övervakar de fjärranslutna programmen - kommer du att varna direkt när ett ögonblick stängs av det fjärrprogrammet eller datorn stängs av , eller programmet dör av någon anledning alls.
Om du arbetar i en Windows-miljö och har skapat många kritiska applikationer med Office-programvara, är den här tekniken ett snabbt och billigt (gratis!) Sätt att fjärrövervaka alla kritiska appar.
Ge det ett skott och låt mig veta hur det fungerade för dig? Kunde du imponera på alla dina kollegor med hur snabbt du visste när någon av dina system var nere? Dela dina tankar och erfarenheter i kommentarfältet nedan.
Bildkrediter: Ung man pekar på datorn via Shutterstock
Utforska mer om: Programmering, Visual Basic Programmering.