Monitoruj, czy Twoje aplikacje VBA działają z tym zręcznym skryptem

  • Edmund Richardson
  • 0
  • 1120
  • 191
Reklama

Pozwól, że pomaluję ci scenariusz. Załóżmy, że utworzyłeś przewijany pokaz slajdów Powerpoint, który chcesz stale wyświetlać na dużym ekranie telewizora w pracy. A może masz aplikację Excel, która zawiera formularz zgłoszeniowy dla pracowników, aby wpisać informacje do bazy danych.

Istnieje wiele powodów, dla których warto monitorować, czy aplikacja działa na komputerze zdalnym. Może to zabrzmieć jak skomplikowany wymóg wysokiego poziomu, który wymaga pomocy eksperta IT, ale jestem tutaj, aby powiedzieć, że jest to zadanie, które możesz wykonać sam.

Zaufałeś nam, aby pokazać Ci, jak wykonywać inne pozornie skomplikowane zadania za pomocą VBA, takie jak wysyłanie wiadomości e-mail z programu Excel Jak wysyłać wiadomości e-mail z arkusza kalkulacyjnego Excel za pomocą skryptów VBA Jak wysyłać wiadomości e-mail z arkusza kalkulacyjnego Excel za pomocą skryptów VBA Nasz szablon kodu będzie pomoc w konfigurowaniu automatycznych wiadomości e-mail z poziomu programu Excel za pomocą skryptów Collaboration Data Objects (CDO) i VBA. , przekazywanie informacji do schowka Windows Przekaż dowolne informacje między aplikacjami VBA Używając schowka Przekaż dowolne informacje między aplikacjami VBA Używając schowka Jedną z najbardziej frustrujących części pracy z VBA wewnątrz określonych aplikacji jest to, że nie zawsze łatwo jest uzyskać dwie aplikacje “rozmowa” do siebie. Możesz wypróbować bardzo szybkie transakcje ... i integrację programu Excel Jak zintegrować dane Excela z dokumentem Word Jak zintegrować dane Excela z dokumentem Word W tygodniu roboczym prawdopodobnie wiele razy kopiujesz i wklejasz informacje z Excel do Worda lub na odwrót. W ten sposób ludzie często tworzą pisemne raporty… dane w dokumencie Word.

Teraz wszystkie te rzeczy były względnie pasywne. Wysyłanie wiadomości e-mail lub przekazywanie danych z jednej aplikacji do drugiej na komputerze to jedno, ale w tym przypadku będziemy monitorować jedną aplikację działającą na jednym komputerze, a inną aplikację działającą na komputerze zdalnym. To możliwe - zaufaj mi.

System zdalnego monitorowania aplikacji

Jest to w zasadzie system, który może zmienić cię w bohatera w pracy za pomocą zaledwie kilku prostych linii kodu na obu końcach konfiguracji.

Jak będzie wyglądać konfiguracja? Zasadniczo ta konfiguracja może współpracować z wieloma zdalnymi systemami komputerowymi, które mogą wyświetlać coś na dużym ekranie telewizora, uruchomić ekran wprowadzania danych Excel lub cokolwiek innego, co jest aplikacją Office z VBA.

Handshaking VBA Script

W tym przykładzie zamierzam utworzyć jeden komputer, na którym aplikacja VBA zapisuje plik na dysku twardym komputera lokalnego w katalogu c: \ temp \ handshaking \ co 5 sekund. Następnie zdalny komputer monitorujący będzie co jakiś czas zdalnie sprawdzał ten katalog w poszukiwaniu pliku. Jeśli plik istnieje, usunie go (ponieważ jeśli program zdalny jest uruchomiony, powinien po prostu ponownie utworzyć plik). Jeśli plik nie istnieje, wyświetli ostrzeżenie, że aplikacja na tym komputerze nie działa.

Oto jak to wygląda.

Najpierw pokażę, jak można dodać skrypt VBA do lokalnej aplikacji Office, która będzie zapisywać plik uzgadniania co 5 sekund (jeśli plik jeszcze nie istnieje).

W moim przykładzie utworzyłem dwa przyciski, aby pokazać, jak działa skrypt, ale w aplikacji uruchomisz “Rozpocznij uzgadnianie” skrypt po uruchomieniu aplikacji. W programie Excel jest to Arkusz -> Aktywuj funkcję.

Zanim zaczniesz korzystać ze skryptu, który napisze plik uzgadniania, musisz aktywować odwołanie do środowiska wykonawczego Microsoft Scripting Runtime - pozwala to aplikacji VBA na dostęp do narzędzi do manipulacji plikami w systemie Windows. Możesz uzyskać do niego dostęp w edytorze VBA, klikając menu Narzędzia -> Referencje.

Po prostu przewiń w dół, wybierz Microsoft Scripting Runtime, i gotowe.

„Regularnie sprawdzaj, czy plik uzgadniania istnieje. „Jeśli nie, napisz nowy plik. Nazwa pliku to identyfikator komputera, dzięki czemu monitor wie, na którym komputerze występuje problem. 'Skrypt czasowy do regularnego sprawdzania pliku c: \ scripts \ handshake \. 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 (teraz) > (intTime + 5) Lub Drugi (Teraz) = 0 Następnie „Sprawdź, czy plik istnieje” Jeśli nie, utwórz go Jeśli Dir (sFile) = - Następnie „Plik nie istnieje, utwórz go ponownie MsgBox„ utworzył ”Otwórz sFile dla wyjścia Jako # i Zamknij Koniec If intTime = Drugi (teraz) Arkusze („arkusz 1”). Zakres („a1”). Wartość = Czas końca, jeśli DoEvents Wend

Ten skrypt ma tylko 16 wierszy, jeśli nie policzysz definicji zmiennych, to prosty skrypt! Wszystko, co robi, to konfiguruje pętlę timera, która działa co 5 sekund. Sprawdza, czy plik uzgadniania istnieje. Jeśli nie, odtwarza plik.

Jeśli się nad tym zastanowić, jest to prosty, kreatywny sposób poinformowania świata, że ​​aplikacja działa i działa. Pokażę ci, co mam na myśli. Kiedy kliknę “Rozpocznij uzgadnianie” i przejdź do katalogu c: \ temp \ handshaking \, widzę, że mój skrypt VBA utworzył nowy plik. Jest to pusty plik, ale to nie ma znaczenia - liczy się to, że plik istnieje.

Aby przetestować skrypt, ręcznie usuwam plik tekstowy z katalogu.

Kilka sekund później plik pojawi się ponownie.

Oznacza to, że w tym momencie każdy lub cokolwiek zewnętrznego w stosunku do Twojej aplikacji może sprawdzić, czy Twój program jest otwarty, usuwając ten plik, a następnie sprawdzając, czy plik pojawia się ponownie. Prosty - ale wydajny!

Tworzenie skryptu monitorowania zdalnego

Teraz, gdy masz skrypt uzgadniania VBA działający na wszystkich zdalnych aplikacjach, będziesz chciał utworzyć centralny program działający na jakimś serwerze, a może na własnym komputerze roboczym, który wychodzi i monitoruje, czy te zdalne aplikacje są uruchomione.

Najlepszym sposobem na to jest użycie skryptu działającego w tle bez interfejsu GUI. Wszystko, co chcesz zrobić w skrypcie, to powiadomienie, gdy któraś ze zdalnych aplikacji przestanie działać. Idealnym narzędziem dla tej aplikacji jest skrypt systemu Windows. Wystarczy utworzyć nowy plik tekstowy o nazwie handshaking.wsf i wkleić następujący skrypt.

Opcja Wyraźnie przy błędzie Wznów Następny Dim strHost Dim strComputerName Dim ReturnCode Dim strLine Dim Shell Dim oFSO, sFile, oFile, sText Dim oFSO2, sFile2, oFile2, sText2 Dim strFailedList Ustaw Shell = wscript.createObject ("wscript.shell") Ustaw oFSO = CreateObject („Scripting.FileSystemObject”) Ustaw oFSO2 = CreateObject („Scripting.FileSystemObject”) sFile = "\\ MyComputerName \ c $ \ users \ owner \ scripts \ handshaking \ terminallist.ini" strFailedList = "" Jeśli oFSO.FileExists ( sFile) Następnie ustaw oFile = oFSO.OpenTextFile (sFile, 1) Do While Not oFile.AtEndOfStream sText = oFile.ReadLine If Trim (sText) - Następnie strComputerName = Trim (sText) sFile2 = "\\" & strComputerName & " $ \ users \ owner \ scripts \ handshaking \ "& strComputerName &" .txt "
 Jeśli oFSO2.FileExists (sFile2) to
 oFSO2.DeleteFile sFile2, True
 W przeciwnym razie WScript.Echo strComputerName & „oprogramowanie nie działa!” End If End If Loop oFile.Close Else WScript.Echo „Plik nie istniał”. End If Set Shell = Nic Set oFSO = Nic WScript.Quit

Ten skrypt używa podsystemu plików Windows, aby najpierw otworzyć “terminallist.ini” plik, który zasadniczo zawiera wszystkie pliki komputera zdalnego, do którego próbujesz uzyskać dostęp. W tym przypadku, dla mojego testu, ma trzy linie zawierające MyComputerName, MyOtherComputer i YetAnotherComputer.

Powyższy skrypt przejdzie w dół listy komputerów, uzyska dostęp do komputera zdalnego przy użyciu ścieżki sieciowej (oczywiście musisz być administratorem), a jeśli plik istnieje, usunie go. Jeśli plik nie istnieje, wygeneruje alert.

Uruchamiając mój skrypt monitorowania WSF, nie zaalarmował na pierwszym komputerze, ponieważ plik został znaleziony, ale zaalarmował na pozostałych dwóch, ponieważ te zdalne aplikacje jeszcze nie istnieją i nie działają.

Teraz, aby upewnić się, że oprogramowanie monitorujące regularnie działa i sprawdza, czy wszystkie zdalne komputery działają, musisz skonfigurować powyższy skrypt WSF jako zaplanowane zadanie uruchamiane co 5 minut.

Wystarczy utworzyć zadanie na serwerze lub na głównym komputerze, które wskazuje skrypt.

I utwórz nieokreślony harmonogram, w którym skrypt monitorowania będzie uruchamiany co 5 minut.

Teraz, używając tylko tych dwóch prostych skryptów - jednego fragmentu VBA wbudowanego w dowolny z istniejących programów pakietu Office i jednego skryptu Windows, który stale monitoruje te zdalne programy - otrzymasz natychmiastowe powiadomienie, gdy tylko ktoś zamknie ten zdalny program lub komputer się wyłączy lub program umrze z jakiegokolwiek powodu.

Jeśli pracujesz w środowisku Windows i utworzyłeś wiele krytycznych aplikacji przy użyciu oprogramowania Office, ta technika jest bardzo szybkim i tanim (darmowym!) Sposobem na zdalne monitorowanie wszystkich tych krytycznych aplikacji.

Spróbuj i daj mi znać, jak Ci się udało? Czy byłeś w stanie zaimponować wszystkim swoim kolegom, jak szybko wiedziałeś, kiedy jeden z twoich systemów był wyłączony? Podziel się swoimi przemyśleniami i doświadczeniami w sekcji komentarzy poniżej.

Kredyty obrazkowe: Młody człowiek, wskazując na komputer za pośrednictwem Shutterstock




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.