Controleer of uw VBA-apps worden uitgevoerd met dit gladde script

Controleer of uw VBA-apps worden uitgevoerd met dit gladde script / ramen

Laat me een scenario voor je schilderen. Laten we zeggen dat je een rollende Powerpoint-diavoorstelling hebt gemaakt die je permanent op een groot tv-scherm op het werk wilt weergeven. Of misschien hebt u een Excel-toepassing die een invoerformulier voor uw werknemers bevat om informatie in een database te typen.

Er zijn veel redenen waarom u wilt controleren of een toepassing op een externe computer wordt uitgevoerd. Dit klinkt misschien als een gecompliceerde eis van hoog niveau dat je een IT-expert nodig hebt om je mee te helpen, maar ik ben hier om je te vertellen dat dit een taak is die je zelf kunt uitvoeren.

Je hebt ons vertrouwd om je te laten zien hoe je andere ogenschijnlijk ingewikkelde taken met VBA eerder moet doen, zoals het verzenden van e-mails vanuit Excel. E-mails verzenden vanuit een Excel-spreadsheet VBA-scripts gebruiken E-mails verzenden vanuit een Excel-spreadsheet VBA-scripts gebruiken Onze codesjabloon zal u helpen bij het instellen van geautomatiseerde e-mails vanuit Excel met behulp van Collaboration Data Objects (CDO) en VBA-scripts. Meer informatie, informatie doorgeven aan het klembord van Windows Alle informatie tussen VBA-toepassingen doorgeven Het klembord gebruiken Alle informatie tussen VBA-toepassingen doorgeven Het klembord gebruiken Een van de meest frustrerende aspecten van het werken met VBA in specifieke toepassingen, is dat het niet altijd gemakkelijk is om twee te krijgen toepassingen voor “praten” naar elkaar. U kunt proberen voor zeer snelle transacties ... Meer lezen en Excel integreren Excel-gegevens integreren in een Word-document Excel-gegevens integreren in een Word-document Tijdens uw werkweek zijn er waarschijnlijk vele malen dat u merkt dat u aan het kopiëren en plakken bent informatie uit Excel in Word, of andersom. Dit is hoe mensen vaak geschreven rapporten produceren ... Lees Meer gegevens in een Word-document.

Nu, al die dingen waren relatief passief. Het verzenden van e-mails of het doorgeven van gegevens van de ene applicatie naar de andere op een computer is één ding, maar in dit geval zullen we één toepassing monitoren die op één computer draait, met een andere applicatie op een externe computer. Het is mogelijk - vertrouw me.

Een Remote Application Monitoring System

Dit is eigenlijk een systeem dat je op je werk tot een held kan maken met slechts een paar eenvoudige regels code aan beide kanten van de installatie.

Hoe ziet de installatie eruit? In principe kan deze opstelling werken met meerdere externe computersystemen die mogelijk iets weergeven op een groot tv-scherm of een Excel-gegevensinvoerscherm uitvoeren, of iets anders dat een Office-toepassing met VBA is.

Een Handshaking VBA-script

In het voorbeeld hier ga ik één computer maken waarin de VBA-toepassing elke 5 seconden een bestand naar de harde schijf van de lokale computer in de map c: \ temp \ handshaking \ schrijft. Vervolgens zal de computer voor externe bewaking af en toe die map voor het bestand controleren. Als het bestand bestaat, zal het het verwijderen (want als het programma op afstand actief is, zou het het bestand opnieuw moeten aanmaken). Als het bestand niet bestaat, geeft het een melding dat de toepassing op die computer niet meer actief is.

Dit is hoe dat eruit ziet.

Ten eerste ga ik je laten zien hoe je het VBA-script kunt toevoegen aan je lokale Office-toepassing die het handshaking-bestand elke 5 seconden zal schrijven (als het bestand nog niet bestaat).

In mijn voorbeeld heb ik twee drukknoppen gemaakt om u te laten zien hoe het script werkt, maar in uw toepassing start u de “Start Handshaking” script wanneer de toepassing start. In Excel is dat het werkblad -> Activeren functie.

Voordat u begint met het script dat het handshaking-bestand zal schrijven, moet u de Microsoft Scripting Runtime-referentie activeren - dit geeft uw VBA-app toegang tot de bestandsmanipulatiegereedschappen van Windows. U kunt dit in de VBA-editor openen door op het menu Tools -> References te klikken.

Scrol gewoon naar beneden, selecteer Microsoft Scripting Runtime en u bent klaar om te gaan.

'Controleer regelmatig of het handshaking-bestand bestaat. 'Als dit niet het geval is, schrijft u een nieuw bestand. 'Bestand heeft een naam met de computer-id, zodat de monitor weet welke computer een probleem heeft. 'Timerscript om regelmatig c: \ scripts \ handshake \ voor het bestand te controleren. Dim intTime As Integer Dim sFile As String Dim sPath As String Dim SFname As String Dim i As Integer intTime = 5 i = FreeFile TimerOn = True sFile = "c: \ Temp \ MyComputerName.txt" While TimerOn = True If Second (Now) > (intTime + 5) Of Second (Now) = 0 Vervolgens 'Controleer of bestand bestaat' Zo niet, maak het opnieuw Als Dir (sFile) = - Vervolgens 'Bestand bestaat niet, maak het opnieuw MsgBox' gemaakt "Open sFile For Output Als #i Sluit einde Als intTime = Tweede (nu) -bladen ("blad1"). Bereik ("a1"). Waarde = Tijd einde als DoEvents Wend

Dit script heeft slechts 16 regels als u de variabeldefinities niet telt, dat is een eenvoudig script! Het enige dat het doet is een timer-lus instellen die elke 5 seconden wordt uitgevoerd. Het controleert of het handshaking-bestand bestaat. Als dit niet het geval is, wordt het bestand opnieuw gemaakt.

Als je erover nadenkt, is dit een eenvoudige, creatieve manier om de wereld te vertellen dat de toepassing in leven is. Ik zal je laten zien wat ik bedoel. Wanneer ik op de “Start Handshaking” knop en ga dan naar de map c: \ temp \ handshaking \, ik kan zien dat mijn VBA-script het nieuwe bestand heeft gemaakt. Het is een leeg bestand, maar dat maakt niet uit - het gaat erom dat het bestand bestaat.

Om mijn script te testen, verwijder ik handmatig het tekstbestand uit de map.

Een paar seconden later verschijnt het bestand opnieuw.

Dat betekent dat op dit moment iedereen of iets externs aan uw applicatie kan controleren of uw programma geopend is door dat bestand te verwijderen en vervolgens te controleren of het bestand opnieuw verschijnt. Eenvoudig maar efficiënt!

Een Remote Monitoring Script maken

Nu dat u uw VBA-handshaking-script op al uw externe toepassingen hebt staan, wilt u een centraal programma maken dat op een of andere server draait, of misschien op uw eigen pc op het werk, die uit gaat en controleert of die externe apps actief zijn.

De beste manier om dit te doen is met een script dat op de achtergrond draait zonder een GUI-front-end. Het enige wat u wilt dat het script doet, is u een waarschuwing geven wanneer een van de externe toepassingen niet meer actief is. De perfecte tool voor deze app is Windows-script. Maak gewoon een nieuw tekstbestand met de naam handshaking.wsf en plak het volgende script.

Optie Expliciet bij fout Doorgaan Volgende 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") Set oFSO = CreateObject ("Scripting.FileSystemObject") Stel oFSO2 = CreateObject ("Scripting.FileSystemObject") sFile = "\\ MijnComputerNaam \ c $ \ users \ owner \ scripts \ handshaking \ terminallist.ini" strFailedList = "" Als oFSO.FileExists ( sFile) Stel dan oFile = oFSO.OpenTextFile (sFile, 1) in terwijl niet NotFile.AtEndOfStream sText = oFile.ReadLine If Trim (sText) <> - Then strComputerName = Trim (sText) sFile2 = "\\" & strComputerName & " \ c $ \ users \ owner \ scripts \ handshaking \ "& strComputerName &" .txt "
 Als oFSO2.FileExists (sFile2) dan
 oFSO2.DeleteFile sFile2, True
 Anders WScript.Echo strComputerName & "draait de software niet!" End If End If Loop oFile.Sluit anders WScript.Echo "Het bestand was er niet." End If Set Shell = Nothing Set oFSO = Niets WScript.Quit

Dit script gebruikt het Windows-bestandssubsysteem om eerst het “terminallist.ini” bestand, dat in feite alle externe computerbestanden heeft die u probeert te openen. In dit geval heeft het voor mijn test drie regels met MyComputerName, MyOtherComputer en YetAnotherComputer.

Het bovenstaande script gaat langs je lijst met computers, benadert het externe apparaat via het netwerkpad (je moet natuurlijk een beheerder zijn) en als het bestand bestaat, wordt het verwijderd. Als het bestand niet bestaat, geeft het een waarschuwing.

Bij het uitvoeren van mijn WSF-bewakingsscript heeft het niet gewaarschuwd op de eerste computer, omdat het bestand werd gevonden, maar het waarschuwde de andere twee omdat deze externe toepassingen nog niet bestaan ​​en niet actief zijn.

Om ervoor te zorgen dat uw controlesoftware regelmatig wordt uitgevoerd en controleert of al uw externe computers uw programma gebruiken, moet u het bovenstaande WSF-script instellen als een geplande taak die elke 5 minuten wordt uitgevoerd.

Maak gewoon een taak op uw server of uw hoofdcomputer die naar het script verwijst.

En maak een onbepaald schema waarmee uw bewakingsscript elke 5 minuten wordt uitgevoerd.

Nu, met slechts deze twee eenvoudige scripts - één VBA-fragment ingebed in een van uw bestaande Office-programma's en één Windows Script dat voortdurend die externe programma's controleert - wordt u onmiddellijk gewaarschuwd zodra iemand dat externe programma sluit of de pc wordt uitgeschakeld of het programma sterft om welke reden dan ook.

Als u in een Windows-omgeving werkt en veel kritieke applicaties hebt gemaakt met behulp van Office-software, is deze techniek een zeer snelle en goedkope (gratis!) Manier om al deze kritieke apps op afstand te volgen..

Geef het een kans en laat me weten hoe het voor jou is gelukt? Was je in staat om indruk te maken op al je collega's met hoe snel je wist wanneer een van je systemen defect was? Deel uw mening en ervaringen in de opmerkingen hieronder.

Afbeelding Credits: jonge man wijzend op computer via Shutterstock

Ontdek meer over: Programmeren, Visual Basic Programming.