Surveiller si vos applications VBA s'exécutent avec ce script fluide

Surveiller si vos applications VBA s'exécutent avec ce script fluide / les fenêtres

Laissez-moi peindre un scénario pour vous. Supposons que vous ayez créé un diaporama Powerpoint défilant que vous souhaitez afficher en permanence sur un grand écran de télévision au travail. Ou bien, vous avez peut-être une application Excel qui comprend un formulaire de saisie pour que vos travailleurs puissent saisir des informations dans une base de données.

Il y a beaucoup de raisons pour lesquelles vous pourriez vouloir contrôler si une application est en cours d'exécution sur un ordinateur distant. Cela peut sembler une exigence de haut niveau compliquée pour laquelle vous aurez besoin d'un expert en informatique, mais je suis ici pour vous dire que c'est une tâche que vous pouvez accomplir vous-même..

Vous nous avez déjà fait confiance pour vous montrer comment effectuer d'autres tâches apparemment complexes avec VBA, telles que l'envoi d'e-mails à partir d'Excel. Procédure d'envoi d'e-mails à partir d'une feuille de calcul Excel à l'aide de scripts VBA Procédure d'envoi d'e-mails à partir d'une feuille de calcul Excel à l'aide de scripts VBA Notre modèle de code vous aider à configurer des e-mails automatisés à partir d'Excel à l'aide de CDO (Collaboration Data Objects) et de scripts VBA. En savoir plus, transmission d'informations au Presse-papiers Windows Passer toute information entre des applications VBA à l'aide du presse-papier Passer toute information entre des applications VBA à l'aide du presse-papier L'un des aspects les plus frustrants de l'utilisation de VBA dans des applications spécifiques est qu'il n'est pas toujours facile d'obtenir deux applications à “parler” les uns aux autres. Vous pouvez essayer des transactions très rapides… Lire la suite et intégrer Excel Intégration de données Excel à un document Word Intégration de données Excel à un document Word Au cours de votre semaine de travail, vous êtes sans doute souvent obligé de copier-coller. informations d'Excel dans Word, ou l'inverse. C’est ainsi que les gens produisent souvent des rapports écrits… Lire plus de données dans un document Word.

Maintenant, toutes ces choses étaient relativement passives. Envoyer des courriels ou transmettre des données d'une application à une autre sur un ordinateur est une chose, mais dans ce cas, nous allons surveiller une application en cours d'exécution sur un ordinateur, avec une autre application en cours d'exécution sur un ordinateur distant. C'est possible - croyez-moi.

Un système de surveillance d'application à distance

C'est en gros un système qui peut vous transformer en un héros au travail avec seulement quelques lignes de code simples aux deux extrémités de la configuration..

À quoi ressemblera la configuration? Fondamentalement, cette configuration peut fonctionner avec plusieurs systèmes informatiques distants pouvant afficher quelque chose sur un grand écran de télévision, ou exécuter un écran de saisie de données Excel, ou toute autre application constituant une application Office avec VBA..

Un script VBA Handshaking

Dans l'exemple ci-dessous, je vais créer un ordinateur sur lequel l'application VBA écrit un fichier sur le disque dur de l'ordinateur local dans le répertoire c: \ temp \ handshaking \ toutes les 5 secondes. Ensuite, l'ordinateur de surveillance distant vérifie ce répertoire à distance de temps en temps pour le fichier. Si le fichier existe, il le supprimera (car si le programme distant est en cours d'exécution, il doit simplement recréer le fichier). Si le fichier n'existe pas, il sera alerté que l'application sur cet ordinateur n'est plus en cours d'exécution.

Voici à quoi ça ressemble.

Tout d'abord, je vais vous montrer comment ajouter le script VBA sur votre application Office locale, qui écrira le fichier de transfert toutes les 5 secondes (si le fichier n'existe pas déjà)..

Dans mon exemple, j'ai créé deux boutons-poussoirs pour vous montrer comment fonctionne le script, mais dans votre application, vous allez lancer le “Commencez la poignée de main” script au démarrage de l'application. Dans Excel, c'est la feuille de calcul -> Activer.

Avant de vous familiariser avec le script qui écrira le fichier de transfert, vous devez activer la référence Microsoft Scripting Runtime - ceci permet à votre application VBA d'accéder aux outils de manipulation de fichiers de Windows. Vous pouvez y accéder dans l’éditeur VBA en cliquant sur le menu Outils -> Références..

Faites défiler la liste, sélectionnez Microsoft Scripting Runtime, et vous êtes prêt à partir..

'Sur une base régulière, vérifiez si le fichier de transfert existe. 'Si ce n'est pas le cas, écrivez un nouveau fichier. 'Le fichier porte le nom de l'ID de l'ordinateur afin que le moniteur sache quel ordinateur rencontre un problème. 'Script de minuterie pour vérifier régulièrement le fichier dans c: \ scripts \ handshake \. Dim intTime As Integer Dim sFile As String Dim sPath As String Dim Nom As String Dn i Integer intTime = 5 i = FreeFile TimerOn = Vrai sFile = "c: \ Temp \ MonNomOrdinateur.txt" While TimerOn = Vrai si seconde (maintenant) > (intTime + 5) ou seconde (maintenant) = 0 Puis "Vérifier si le fichier existe" Sinon, recréez-le Si Dir (sFile) = - Then "Le fichier n'existe pas, recréez-le MsgBox" créé "Ouvrir un fichier pour la sortie As #i Close End If intTime = Deuxième (maintenant) Feuilles ("sheet1"). Plage ("a1"). Valeur = Heure de fin si DoEvents Wend

Ce script n'a que 16 lignes si vous ne comptez pas les définitions de variable, c'est un script simple! Tout ce qu'il fait est de configurer une boucle de minuterie qui s'exécute toutes les 5 secondes. Il vérifie si le fichier handshaking existe. Si ce n'est pas le cas, le fichier est recréé.

Si vous y réfléchissez, il s'agit d'un moyen simple et créatif de dire au monde que l'application est active et en cours d'exécution. Laissez-moi vous montrer ce que je veux dire. Quand je clique sur le “Commencez la poignée de main” puis allez dans le répertoire c: \ temp \ handshaking \, je peux voir que mon script VBA a créé le nouveau fichier. C'est un fichier vide, mais ça n'a pas d'importance - ce qui compte, c'est que le fichier existe.

Pour tester mon script, je supprime manuellement le fichier texte du répertoire.

Quelques secondes plus tard, le fichier réapparaît.

Cela signifie qu’à ce stade, toute personne ou tout élément externe à votre application peut vérifier si votre programme est ouvert ou non en supprimant ce fichier, puis en vérifiant si le fichier réapparaît. Simple - pourtant efficace!

Création d'un script de surveillance à distance

Maintenant que votre script d'établissement de liaison VBA s'exécute sur toutes vos applications distantes, vous devez créer un programme central s'exécutant sur un serveur, ou peut-être sur votre propre ordinateur de travail, qui surveille le fonctionnement de ces applications distantes..

La meilleure façon de procéder consiste à exécuter un script en arrière-plan sans interface graphique. Tout ce que vous voulez que le script fasse, c'est vous avertir lorsque l'une des applications distantes cesse de fonctionner. L'outil parfait pour cette application est le script Windows. Créez simplement un nouveau fichier texte appelé handshaking.wsf et collez le script suivant.

Option Explicit On Error Resume Next Dim strHost Dim strComputerName Dim ReturnCode Dim strLine Dim Shell Dim oFSO, sFile, oFile, sText Dim oFSO2, sFile2, oFile2, sText2 Dim strFailedList Définit Shell = wscript.createObject ("wscript.shell") CreateObject ("Scripting.FileSystemObject") Définissez oFSO2 = CreateObject ("Scripting.FileSystemObject") sFile = "\\ MonOrdinateur \ c $ \ utilisateurs \ propriétaire \ scripts \ handshaking \ terminallist.ini" strFailedList = "" oOFSO.FSS sFile) Ensuite, définissez oFile = oFSO.OpenTextFile (sFile, 1) Faites en même temps que oFile.AtEndOfStream sText = oFile.ReadLine If Trim (sText) <> - puis strComputerName = Trim (sText) sFile2 = "\\" & strComputer & \ c $ \ users \ propriétaire \ scripts \ handshaking \ "& strComputerName &" .txt "
 Si oFSO2.FileExists (sFile2), alors
 oFSO2.DeleteFile sFile2, True
 Sinon WScript.Echo strComputerName & "n'exécute pas le logiciel!" End If End If Loop oFile.Close Else WScript.Echo "Le fichier n'était pas là." End If Set Shell = Nothing Set oFSO = Nothing WScript.Quit

Ce script utilise le sous-système de fichiers Windows pour ouvrir d’abord le “terminallist.ini” fichier, qui contient essentiellement tous les fichiers de l'ordinateur distant auxquels vous essayez d'accéder. Dans ce cas, pour mon test, il comporte trois lignes contenant MyComputerName, MyOtherComputer et YetAnotherComputer..

Le script ci-dessus descend votre liste d'ordinateurs, accède à la machine distante à l'aide du chemin d'accès réseau (vous devez évidemment être un administrateur) et, si le fichier existe, il le supprimera. Si le fichier n'existe pas, il émettra une alerte.

Lors de l’exécution de mon script de surveillance WSF, il n’a pas alerté le premier ordinateur, car le fichier a été trouvé, mais il a alerté les deux autres parce que ces applications distantes n’existent pas encore et ne sont pas en cours d’exécution..

Maintenant, pour vous assurer que votre logiciel de surveillance s'exécute régulièrement et vérifie que tous vos ordinateurs distants exécutent votre programme, vous devez configurer le script WSF ci-dessus en tant que tâche planifiée s'exécutant toutes les 5 minutes..

Créez simplement une tâche sur votre serveur ou votre PC principal qui pointe vers le script.

Et créez un programme indéfini qui exécute votre script de surveillance toutes les 5 minutes.

Désormais, avec seulement ces deux scripts simples - un extrait VBA intégré dans l’un de vos programmes Office existants et un script Windows qui surveille en permanence ces programmes distants - vous serez immédiatement alerté dès que quelqu'un ferme ce programme distant ou que le PC s'éteint. , ou le programme meurt pour quelque raison que ce soit.

Si vous travaillez dans un environnement Windows et avez créé de nombreuses applications critiques à l'aide du logiciel Office, cette technique est un moyen très rapide et peu coûteux (gratuit!) De surveiller à distance toutes ces applications critiques..

Essayez-le et laissez-moi savoir comment cela a fonctionné pour vous? Avez-vous pu impressionner tous vos collègues avec la rapidité avec laquelle vous avez su que l'un de vos systèmes était en panne? Partagez vos pensées et expériences dans la section commentaires ci-dessous.

Crédits d'image: Jeune homme pointant sur un ordinateur via Shutterstock

En savoir plus sur: Programmation, Programmation Visual Basic.