Monitorar se seus aplicativos vba estão rodando com este script liso
Deixe-me pintar um cenário para você. Digamos que você criou um Powerpoint slideshow de rolagem que você deseja exibir permanentemente em uma tela de TV grande no trabalho. Ou, talvez você tenha um aplicativo Excel que inclui um formulário de inscrição para os seus trabalhadores para digitar informações em um banco de dados.
Conteúdo
Há uma série de razões pelas quais você pode querer monitorar se um aplicativo está sendo executado em algum computador remoto. Isto pode soar como um requisito de alto nível complicado que você vai precisar de um especialista em TI para ajudá-lo, mas eu estou aqui para dizer-lhe que esta é uma tarefa que pode realizar-se.
Você confiou-nos a mostrar-lhe como fazer outras tarefas aparentemente complicadas com VBA antes, como enviar e-mails a partir do Excel, passando informações para o prancheta de Windows, e integrando Excel dados em um documento do Word.Como enviar e-mails de uma planilha do Excel Usando Scripts VBAComo enviar e-mails de uma planilha do Excel Usando Scripts VBANo passado, eu usei e-mail muito em meus trabalhos em lotes e outros scripts automatizados, assim como eu descrevi em artigos anteriores. Estes são grandes para aqueles momentos em que você tem um script ...consulte Mais informação
Video: curso excel avançado com vba
Agora, todas essas coisas eram relativamente passiva. Enviar e-mails ou passar dados de uma aplicação para outra em um computador é uma coisa, mas neste caso vamos monitorar um aplicativo em execução em um computador, com outro aplicativo em execução em um computador remoto. É possível - confiar em mim.
Um Sistema de Monitoramento Remote Application
Este é basicamente um sistema que pode transformá-lo em um herói no trabalho com apenas algumas linhas simples de código em ambas as extremidades da instalação.
Qual será a configuração se parece? Basicamente, esta configuração pode trabalhar com vários sistemas de computadores remotos que podem estar exibindo algo em uma grande tela de TV, ou executando uma tela de entrada de dados do Excel, ou qualquer outra coisa que é um aplicativo do Office com VBA.
A VBA Script do aperto de mão
No exemplo aqui, eu estou indo para criar um computador onde a aplicação VBA grava um arquivo para o disco rígido do computador local no c: temp handshaking diretório a cada 5 segundos. Em seguida, o computador de monitoramento remoto irá verificar remotamente esse diretório a cada tantas vezes para o arquivo. Se o arquivo existir, ele irá excluí-lo (porque se o programa remoto está sendo executado, ele deve apenas recriar o arquivo novamente). Se o arquivo não existir, ele irá emitir um alerta de que a aplicação no computador não está em execução.
Video: 25- Excel Básico - Tela do Excel (Barra de títulos - Ícone do aplicativo) - Edivam Gomes
Aqui está o que parece.
Primeiro, eu vou mostrar como você pode adicionar o script VBA em seu aplicativo do Office local que irá gravar o arquivo aperto de mão a cada 5 segundos (se o arquivo ainda não existir).
No meu exemplo, eu criei dois botões para mostrar como o script funciona, mas em sua aplicação você vai lançar o script “Start aperto de mão” quando o aplicativo é iniciado. No Excel, essa é a -gt planilha; função de ativar.
Antes de começar com o script que irá gravar o arquivo aperto de mão, você precisa ativar a referência Microsoft Scripting Runtime - isso permite que seu aplicativo VBA para acessar as ferramentas de manipulação de arquivos do Windows. Você pode acessar esta no editor VBA, clique no -gt Ferramentas; Referências menu.
Basta rolar, selecionar Microsoft Scripting Runtime, e você está pronto para ir.
`Em uma programação regular, verifique se o arquivo handshaking exists.`If isso não acontecer, escrever um novo file.`File é nomeado com o ID computador para monitorar sabe which`computer é ter um script problem.`Timer verificar regularmente c: scripts handshake para o file.Dim intTime Como IntegerDim sFile Como StringDim sPath Como StringDim SFname Como StringDim i Como IntegerintTime = 5i = FreeFileTimerOn = TruesFile = "c: Temp MyComputerName.txt"Enquanto timeron = TrueIf Segundo (Agora) gt; (IntTime + 5) ou segunda (Agora) = 0 Then`Check se o arquivo não exists`If, recriar ITIF Dir (sFile) = - Then`File não existe, recriar itMsgBox "criada"Abra sFile Para saída como #iCloseEnd IfintTime = Segundo (agora) Sheets ("sheet1").Alcance("a1") .Value = TimeEnd IfDoEventsWend
Este script tem apenas 16 linhas, se você não contar as definições de variáveis, que é um script simples! Tudo que faz é configura um loop timer que é executado a cada 5 segundos. Ele verifica se o arquivo existe handshaking. Se isso não acontecer, ele recria o arquivo.
Video: Como adicionar uma despesa parcelada no Qipu?
Se você pensar sobre isso, esta é uma maneira simples e criativa para dizer ao mundo que a aplicação está vivo e funcionando. Deixe-me mostrar-lhe o que quero dizer. Quando clico no botão “Iniciar aperto de mão” e depois ir para o c: temp handshaking diretório, eu posso ver que meu script VBA criou o novo arquivo. É um arquivo vazio, mas isso não importa - o que importa é que o arquivo existe.
Para testar o meu script, eu excluir manualmente o arquivo de texto a partir do diretório.
Alguns segundos depois, o arquivo re-aparecer novamente.
Isso significa que, neste momento, qualquer um ou qualquer coisa externa para o seu aplicativo pode verificar ou não o seu programa está aberto apagando o arquivo e, em seguida, verificar para ver se o arquivo reaparece. Simples - mas eficiente!
Criando um script de Monitoramento Remoto
Agora que você tem o seu script handshaking VBA executando em todos os seus aplicativos remotos, você vai querer criar um programa central que executa em algum servidor, ou talvez no seu próprio PC de trabalho, que sai e monitores se esses aplicativos remotos estão em execução.
A melhor maneira de fazer isso é com um script que é executado em segundo plano, sem um front-end GUI. Tudo o que você deseja que o script para fazer é dar-lhe um alerta quando qualquer um dos aplicativos remotos parar de correr. A ferramenta perfeita para este aplicativo é script do Windows. Basta criar um novo arquivo de texto chamado handshaking.wsf e cole o seguinte script.
Opção ExplicitOn Error Resume NextDim strHostDim strComputerNameDim ReturnCodeDim strLineDim ShellDim oFSO, sFile, oFile, sTextDim oFSO2, sFile2, oFile2, sText2Dim strFailedListSet Shell = WScript.CreateObject ("wscript.shell") Conjunto oFSO = CreateObject ("Scripting.FileSystemObject") Definir oFSO2 = CreateObject ("Scripting.FileSystemObject") = SFile " MyComputerName c $ users proprietário scripts handshaking terminallist.ini"strFailedList = ""Se oFSO.FileExists (sFile) ThenSet oFile = oFSO.OpenTextFile (sFile, 1) Do While Not oFile.AtEndOfStreamsText = oFile.ReadLineIf Trim (sText) lt; gt; - ThenstrComputerName = guarnição (sText) sFile2 = "" & strComputerName & " C $ users proprietário scripts handshaking " & strComputerName & ".TXT"
Se oFSO2.FileExists (sFile2) Em seguida
oFSO2.DeleteFile sFile2, True
ElseWScript.Echo strComputerName & " não está executando o software!"End IfEnd IfLoopoFile.CloseElseWScript.Echo "O arquivo não estava lá."End IfSet Shell = NothingSet oFSO = NothingWScript.Quit
Este script usa subsistema Windows File primeiro abrir o arquivo “terminallist.ini”, que basicamente tem todos os arquivos do computador remoto que você está tentando acessar. Neste caso, para o meu teste, que tem três linhas contendo MyComputerName, MyOtherComputer, e YetAnotherComputer.
O script acima irá percorrer a sua lista de computadores, acessar a máquina remota utilizando o caminho de rede (você precisa ser um administrador, obviamente), e se o arquivo existe, ele irá excluí-lo. Se o arquivo não existir, ele irá emitir um alerta.
Executar o meu script de monitoramento FSM, não alertar sobre o primeiro computador, porque o arquivo foi encontrado, mas ele fez alerta sobre os outros dois porque essas aplicações remotas ainda não existem, e não estão em execução.
Agora, para se certificar que seu software de monitoramento funciona regularmente através de e verifica se todos os seus computadores remotos estão executando o seu programa, você precisa configurar o script FSM acima como uma tarefa agendada que é executado a cada 5 minutos.
Basta criar uma tarefa em seu servidor ou o seu PC principal que aponta para o script.
E criar uma agenda indefinida que executa o seu script de monitoramento a cada 5 minutos.
Agora, com apenas estes dois scripts simples - um trecho de VBA incorporado em qualquer um dos seus programas do Office existentes, e um script do Windows que monitora constantemente os programas remotos - você será alertado instantaneamente o momento em que alguém fecha esse programa remoto, ou o PC é desligado ou o programa morre por qualquer motivo.
Se você estiver trabalhando em um ambiente Windows e criaram um monte de aplicativos críticos utilizando software Office, esta técnica é um (grátis!) Maneira muito rápida e barata para monitorar remotamente todos os aplicativos críticos.
Dê-lhe um tiro e deixe-me saber como funcionou para você? Você foi capaz de impressionar todos os seus colegas com a rapidez com que soube sempre que um dos seus sistemas foi baixo? Compartilhe seus pensamentos e experiências na seção de comentários abaixo.