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

  • Lesley Fowler
  • 0
  • 4670
  • 854
Publicité

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 peut-être avez-vous une application Excel comprenant un formulaire de saisie permettant à vos travailleurs de saisir des informations dans une base de données.

Il existe de nombreuses raisons pour lesquelles vous souhaitez surveiller si une application est exécutée sur un ordinateur distant. Cela peut sembler être une exigence compliquée de haut niveau 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 courriels automatisés à partir d'Excel à l'aide de CDO (Collaboration Data Objects) et de scripts VBA. , passer des 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… 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 probablement souvent obligé de copier-coller des informations à partir de Excel dans Word, ou l'inverse. C’est ainsi que les gens produisent souvent des rapports écrits… des 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 “Commencer 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 simplement défiler vers le bas, sélectionnez Microsoft Scripting Runtime et vous êtes prêt à partir..

'Sur une base régulière, vérifiez si le fichier de négociation 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 Entier Dim sFichier As Chaîne Dim sPath As Chaîn Dim Nom SF En tant que chaîne Dim i En tant qu'entier 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 de transfert 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 “Commencer la poignée de main” puis allez au 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 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 de négociation VBA s'exécute sur toutes vos applications distantes, vous souhaiterez créer un programme central s'exécutant sur un serveur, ou peut-être sur votre propre ordinateur de travail, qui surveille si ces applications distantes sont en cours d'exécution..

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 est de 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éfinissez 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.Français sFile) Ensuite, définissez oFile = oFSO.OpenTextFile (sFile, 1) à faire quand même. $ \ users \ owner \ 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 être administrateur, évidemment), et si le fichier existe, il le supprimera. Si le fichier n'existe pas, il émettra une alerte.

L'exécution de mon script de surveillance WSF n'a pas déclenché d'alerte sur le premier ordinateur, car le fichier a été trouvé, mais il a alerté les deux autres, car ces applications distantes n'existent pas encore et ne s'exécutent pas..

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é à 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 fermera ce programme distant ou que le PC se fermera. , 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..

Donnez-lui un coup de feu et laissez-moi savoir comment cela a fonctionné pour vous? Avez-vous pu impressionner tous vos collègues par 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




Personne n'a encore commenté ce post.

De la technologie moderne, simple et abordable.
Votre guide dans le monde de la technologie moderne. Apprenez à utiliser les technologies et les gadgets qui nous entourent chaque jour et à découvrir des choses intéressantes sur Internet.