Следите за тем, чтобы ваши приложения VBA работали с этим скользким сценарием

  • Michael Fisher
  • 0
  • 4231
  • 134
Реклама

Позвольте мне нарисовать сценарий для вас. Допустим, вы создали прокручиваемое слайд-шоу Powerpoint, которое вы хотите постоянно показывать на большом телевизионном дисплее во время работы. Или, может быть, у вас есть приложение Excel, которое включает в себя форму ввода для ваших работников для ввода информации в базу данных.

Существует множество причин, по которым вам может потребоваться отслеживать, запущено ли приложение на каком-либо удаленном компьютере. Это может звучать как сложное требование высокого уровня, для которого вам понадобится ИТ-специалист, но я здесь, чтобы сказать, что это задача, которую вы можете выполнить самостоятельно..

Вы доверились нам, чтобы показать вам, как выполнять другие, казалось бы, сложные задачи с VBA, например отправлять электронные письма из Excel. Как отправлять электронные письма из электронной таблицы Excel, используя скрипты VBA. Как отправлять электронные письма из электронной таблицы Excel, используя скрипты VBA. поможет вам настроить автоматическую электронную почту из Excel, используя объекты данных совместной работы (CDO) и сценарии VBA. Передача информации в буфер обмена Windows Передача любой информации между приложениями VBA с использованием буфера обмена Передача любой информации между приложениями VBA с использованием буфера обмена Одной из самых неприятных частей работы с VBA внутри конкретных приложений является то, что не всегда легко получить два приложения для “говорить” друг другу. Вы можете попробовать выполнить очень быстрые транзакции ... и интегрировать Excel. Как интегрировать данные Excel в документ Word. Как интегрировать данные Excel в документ Word. В течение вашей рабочей недели, вероятно, вы часто копируете и вставляете информацию из документа Word. Excel в Word или наоборот. Вот как люди часто создают письменные отчеты ... данные в документ Word.

Теперь все эти вещи были относительно пассивными. Отправка электронной почты или передача данных из одного приложения в другое на компьютере - это одно, но в этом случае мы собираемся отслеживать одно приложение, запущенное на одном компьютере, а другое приложение - на удаленном компьютере. Это возможно - поверь мне.

Система удаленного мониторинга приложений

По сути, это система, которая может превратить вас в героя на работе с помощью нескольких простых строк кода на обоих концах установки..

Как будет выглядеть установка? По сути, эта установка может работать с несколькими удаленными компьютерными системами, которые могут отображать что-либо на большом телевизионном дисплее, или запускать экран ввода данных Excel, или что-либо еще, что является приложением Office с VBA..

Скрипт рукопожатия VBA

В этом примере я собираюсь создать один компьютер, на котором приложение VBA будет записывать файл на жесткий диск локального компьютера в каталоге c: \ temp \ handshaking \ каждые 5 секунд. Затем компьютер удаленного мониторинга будет периодически проверять этот каталог на наличие файлов. Если файл существует, он удалит его (потому что, если удаленная программа запущена, он должен просто заново создать файл). Если файл не существует, он выдаст предупреждение о том, что приложение на этом компьютере больше не работает.

Вот как это выглядит.

Сначала я покажу вам, как вы можете добавить сценарий VBA в локальное приложение Office, которое будет записывать файл квитирования каждые 5 секунд (если файл еще не существует)..

В моем примере я создал две кнопки, чтобы показать вам, как работает скрипт, но в вашем приложении вы запустите “Начать рукопожатие” скрипт при запуске приложения. В Excel это Рабочий лист -> Активировать функцию.

Прежде чем приступить к работе со сценарием, который напишет файл подтверждения связи, необходимо активировать ссылку на среду выполнения сценариев Microsoft - это позволит вашему приложению VBA получить доступ к инструментам управления файлами Windows. Вы можете получить доступ к этому в редакторе VBA, щелкнув меню Сервис -> Ссылки.

Просто прокрутите вниз, выберите Microsoft Scripting Runtime, и все готово.

«Регулярно проверяйте, существует ли файл подтверждения связи. «Если это не так, напишите новый файл. Файл называется с идентификатором компьютера, поэтому монитор знает, с каким компьютером возникла проблема. 'Сценарий таймера для регулярной проверки файла c: \ scripts \ handshake \. Dim intTime в виде целого числа Dim sFile в виде строки Dim sPath в виде строки Dim SFname в виде строки Dim i в виде целого числа intTime = 5 i = FreeFile TimerOn = True sFile = "c: \ Temp \ MyComputerName.txt" while TimerOn = True если второе (сейчас) > (intTime + 5) или Second (Now) = 0, затем «Проверить, существует ли файл». Если нет, создайте его заново. Если Dir (sFile) = - Тогда «Файл не существует, создайте его заново. MsgBox« создал »Открыть sFile для вывода Как #i Close End If intTime = Second (Now) Sheets ("sheet1"). Range ("a1"). Value = Time End, если DoEvents Wend

Этот скрипт имеет только 16 строк, если вы не учитываете определения переменных, это простой скрипт! Все, что он делает, это устанавливает цикл таймера, который запускается каждые 5 секунд. Он проверяет, существует ли файл подтверждения связи. Если это не так, он воссоздает файл.

Если подумать, это простой, творческий способ рассказать миру о том, что приложение живо и работает. Позвольте мне показать вам, что я имею в виду. Когда я нажимаю “Начать рукопожатие” и затем перейдите в каталог c: \ temp \ handshaking \, я вижу, что мой VBA-скрипт создал новый файл. Это пустой файл, но это не имеет значения - важно то, что файл существует.

Чтобы проверить мой скрипт, я вручную удаляю текстовый файл из каталога.

Через несколько секунд файл снова появляется снова.

Это означает, что на этом этапе любой или что-либо, не относящееся к вашему приложению, может проверить, открыта ли ваша программа, удалив этот файл, а затем проверив, появляется ли файл снова. Простой - но эффективный!

Создание сценария удаленного мониторинга

Теперь, когда у вас есть сценарий рукопожатия VBA, работающий на всех ваших удаленных приложениях, вы захотите создать центральную программу, запущенную на каком-нибудь сервере или, возможно, на вашем собственном рабочем компьютере, которая будет выходить и контролировать, работают ли эти удаленные приложения..

Лучший способ сделать это с помощью сценария, который выполняется в фоновом режиме без интерфейса GUI. Все, что вы хотите, чтобы скрипт делал, это предупреждает, когда любое из удаленных приложений перестает работать. Идеальным инструментом для этого приложения является скрипт Windows. Просто создайте новый текстовый файл с именем handshaking.wsf и вставьте следующий скрипт.

Параметр Явный При ошибке Возобновить Далее 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.createOf.OreOsFS () CreateObject ("Scripting.FileSystemObject") Установить oFSO2 = CreateObject ("Scripting.FileSystemObject") sFile = "\\ MyComputerName \ c $ \ users \ owner \ scripts \ handshaking \ terminallist.ini" strFailedList = "" Если oFSO.FileEx ( sFile) Затем установите oFile = oFSO.OpenTextFile (sFile, 1) Делать, пока не oFile.AtEndOfStream sText = oFile.ReadLine If Trim (sText) - Тогда strComputerName = Trim (sText) sFile2 = "\\\ & & stompComp" $ \ users \ owner \ scripts \ handshaking \ "& имя_компьютера &" .txt "
 Если oFSO2.FileExists (sFile2), то
 oFSO2.DeleteFile sFile2, True
 Иначе WScript.Echo strComputerName & "не работает программное обеспечение!" End If End If Loop oFile.Close Иначе WScript.Echo "Файл не найден". Завершить, если установить Shell = Nothing Установить oFSO = Nothing WScript.Quit

Этот сценарий использует файловую подсистему Windows, чтобы сначала открыть “terminallist.ini” файл, который в основном содержит все файлы удаленного компьютера, к которым вы пытаетесь получить доступ. В этом случае, для моего теста, он имеет три строки, содержащие MyComputerName, MyOtherComputer и YetAnotherComputer.

Сценарий, приведенный выше, перейдет к вашему списку компьютеров, получит доступ к удаленному компьютеру по сетевому пути (очевидно, вы должны быть администратором), и, если файл существует, он удалит его. Если файл не существует, он выдаст предупреждение.

Запустив мой сценарий мониторинга WSF, он не предупреждал на первом компьютере, потому что файл был найден, но он предупреждал на двух других, потому что эти удаленные приложения еще не существуют и не работают.

Теперь, чтобы убедиться, что ваше программное обеспечение для мониторинга регулярно запускается и проверяет, работают ли все ваши удаленные компьютеры, вам нужно настроить указанный выше сценарий WSF как запланированное задание, которое выполняется каждые 5 минут..

Просто создайте задачу на вашем сервере или вашем главном ПК, которая указывает на сценарий.

И создайте неопределенное расписание, которое запускает ваш скрипт мониторинга каждые 5 минут.

Теперь, используя только эти два простых сценария - один фрагмент VBA, встроенный в любую из ваших существующих программ Office, и один сценарий Windows, который постоянно контролирует эти удаленные программы, - вы будете предупреждены сразу же, как только кто-то закроет эту удаленную программу или компьютер выключится. или программа умирает по любой причине.

Если вы работаете в среде Windows и создали много критически важных приложений с использованием программного обеспечения Office, этот метод является очень быстрым и дешевым (бесплатным!) Способом удаленного мониторинга всех этих критически важных приложений..

Сделайте попытку и дайте мне знать, как это сработало для вас? Удалось ли вам удивить всех ваших коллег тем, как быстро вы узнали, когда одна из ваших систем вышла из строя? Поделитесь своими мыслями и опытом в разделе комментариев ниже.

Кредиты изображения: Молодой человек, указывающий на компьютер через Shutterstock




О современных технологиях, просто и доступно.
Ваш гид в мире современных технологий. Узнайте как использовать технологии и гаджеты, которые нас окружают каждый день и научитесь открывать интересные вещи в Интернете.