quinta-feira, 11 de setembro de 2025

🌐 Automação Inédita em VBA: Monitor de Conexão com Servidor de Rede

🧐 O Problema

Em muitas empresas:

  • Planilhas puxam dados de pastas de rede ou bancos de dados locais.

  • Quando a conexão cai (servidor fora do ar, cabo de rede desconectado, VPN falhou), o usuário só descobre quando a macro dá erro. 😣

  • Isso gera atrasos e perda de produtividade.


💡 A Solução

Criar um monitor de conexão com servidor de rede diretamente no Excel:

  • O usuário informa o endereço do servidor (ex.: \\ServidorFinanceiro\ ou 192.168.0.10).

  • O VBA tenta fazer um ping nesse servidor.

  • Retorna em uma aba de relatório se o servidor está:

    • ✅ Online (acessível)

    • ❌ Offline (indisponível)

  • Também registra a latência (tempo de resposta) em milissegundos.

Assim, antes de rodar qualquer macro crítica, o usuário já sabe se o servidor está de pé. 🚦


🚀 Como Funciona

  1. Na aba "Servidores", o usuário lista os nomes ou IPs a monitorar:

Servidor
\ServidorFinanceiro\
\ServidorRH\
192.168.0.10
  1. Roda a macro.

  2. Na aba "StatusRede", o Excel preenche com:

  • Endereço testado

  • Status (Online/Offline)

  • Tempo de resposta

  • Última checagem


🧑‍💻 Código VBA

Sub MonitorarServidoresRede() Dim wsServidores As Worksheet, wsStatus As Worksheet Dim ultimaLinha As Long, i As Long Dim servidor As String, comando As String Dim resultado As String, latencia As String Dim objShell As Object, execObj As Object, saida As String ' Define a aba de servidores Set wsServidores = ThisWorkbook.Sheets("Servidores") ' Cria/limpa a aba de status On Error Resume Next Set wsStatus = ThisWorkbook.Sheets("StatusRede") If wsStatus Is Nothing Then Set wsStatus = Sheets.Add wsStatus.Name = "StatusRede" End If wsStatus.Cells.Clear On Error GoTo 0 ' Cabeçalho wsStatus.Range("A1:D1").Value = Array("Servidor", "Status", "Latência (ms)", "Última Verificação") ' Última linha na lista de servidores ultimaLinha = wsServidores.Cells(wsServidores.Rows.Count, 1).End(xlUp).Row ' Percorre servidores For i = 2 To ultimaLinha servidor = wsServidores.Cells(i, 1).Value comando = "ping -n 1 " & servidor Set objShell = CreateObject("WScript.Shell") Set execObj = objShell.Exec(comando) saida = execObj.StdOut.ReadAll If InStr(saida, "TTL=") > 0 Then resultado = "✅ Online" ' Extrai tempo de resposta If InStr(saida, "tempo=") > 0 Then latencia = Split(Split(saida, "tempo=")(1), "ms")(0) & " ms" ElseIf InStr(saida, "time=") > 0 Then latencia = Split(Split(saida, "time=")(1), "ms")(0) & " ms" Else latencia = "N/A" End If Else resultado = "❌ Offline" latencia = "-" End If ' Preenche resultados wsStatus.Cells(i, 1).Value = servidor wsStatus.Cells(i, 2).Value = resultado wsStatus.Cells(i, 3).Value = latencia wsStatus.Cells(i, 4).Value = Now Next i MsgBox "🔎 Monitoramento concluído! Veja a aba 'StatusRede'.", vbInformation End Sub

📊 Exemplo de saída (StatusRede)

ServidorStatusLatência (ms)Última Verificação
\ServidorFinanceiro✅ Online25 ms06/09/2025 09:20:31
\ServidorRH❌ Offline-06/09/2025 09:20:31
192.168.0.10✅ Online15 ms06/09/2025 09:20:31

🎯 Onde é útil?

✅ Antes de rodar macros que dependem de arquivos em rede.
✅ Equipes financeiras que acessam planilhas centralizadas.
✅ TI → monitoramento rápido de servidores internos.
✅ Usuários em VPN → saber se o acesso está estável.


🔥 Por que é útil ?

Quase ninguém usa Excel VBA para monitorar rede em tempo real.
Esse tipo de função é típico de ferramentas de TI, mas aqui está integrado direto no Excel.

Nenhum comentário:

Postar um comentário