segunda-feira, 15 de setembro de 2025

📡 Automação Inédita em VBA: Mapa de Uso da Rede no Excel

 🧐 O Problema

Dentro de empresas, muita gente depende de pastas e arquivos na rede.

  • Quando a rede fica lenta, ninguém sabe se o problema é no servidor, na conexão ou no arquivo.

  • Usuários ficam no escuro, sem indicadores sobre a performance do acesso.


💡 A Solução

Criar um medidor de velocidade de rede dentro do Excel com VBA:

  • O Excel faz pequenos testes de leitura e gravação em uma pasta de rede.

  • Mede:

    • ⏱ Tempo de resposta (latência)

    • 📥 Velocidade de leitura (KB/s)

    • 📤 Velocidade de gravação (KB/s)

  • Gera um mapa histórico dos testes em uma aba do Excel.

Assim, os usuários podem ver se a rede está normal ou lenta, antes de culpar o servidor ou a planilha.


🚀 Como Funciona

  1. Na aba "Config", o usuário define o caminho da pasta de rede a ser testada.

  2. O Excel cria um arquivo de teste temporário (TesteRede.tmp).

  3. Mede quanto tempo demora para escrever e ler esse arquivo.

  4. Registra os resultados em "LogRede".


🧑‍💻 Código VBA

Option Explicit Sub TestarRede() Dim pasta As String, arquivoTeste As String Dim ws As Worksheet Dim fso As Object, arq As Object Dim tInicio As Double, tFim As Double Dim tamanhoKB As Double, tempoEscrita As Double, tempoLeitura As Double ' Caminho da pasta configurada pasta = ThisWorkbook.Sheets("Config").Range("A2").Value If pasta = "" Then MsgBox "⚠️ Informe a pasta de rede em Config (A2).", vbExclamation Exit Sub End If arquivoTeste = pasta & "\TesteRede.tmp" ' Cria aba de log se não existir On Error Resume Next Set ws = ThisWorkbook.Sheets("LogRede") If ws Is Nothing Then Set ws = Sheets.Add ws.Name = "LogRede" ws.Range("A1:E1").Value = Array("Data/Hora", "Tempo Escrita (s)", "Tempo Leitura (s)", "Velocidade Escrita (KB/s)", "Velocidade Leitura (KB/s)") End If On Error GoTo 0 Set fso = CreateObject("Scripting.FileSystemObject") ' Gera conteúdo de teste (~100KB) Dim conteudo As String, i As Long For i = 1 To 5000 conteudo = conteudo & String(20, "X") Next i tamanhoKB = Len(conteudo) / 1024 ' === Teste Escrita === tInicio = Timer Set arq = fso.CreateTextFile(arquivoTeste, True) arq.Write conteudo arq.Close tFim = Timer tempoEscrita = tFim - tInicio ' === Teste Leitura === tInicio = Timer Set arq = fso.OpenTextFile(arquivoTeste, 1) arq.ReadAll arq.Close tFim = Timer tempoLeitura = tFim - tInicio ' Apaga arquivo de teste Kill arquivoTeste ' Registra no log Dim ultimaLinha As Long ultimaLinha = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1 ws.Cells(ultimaLinha, 1).Value = Now ws.Cells(ultimaLinha, 2).Value = Round(tempoEscrita, 3) ws.Cells(ultimaLinha, 3).Value = Round(tempoLeitura, 3) ws.Cells(ultimaLinha, 4).Value = Round(tamanhoKB / tempoEscrita, 2) ws.Cells(ultimaLinha, 5).Value = Round(tamanhoKB / tempoLeitura, 2) MsgBox "📡 Teste concluído! Veja os resultados na aba 'LogRede'.", vbInformation End Sub

📊 Exemplo de saída (LogRede)

Data/HoraTempo Escrita (s)Tempo Leitura (s)Velocidade Escrita (KB/s)Velocidade Leitura (KB/s)
12/09/2025 09:05:210,1200,045833,32222,2
12/09/2025 09:10:330,2500,080400,01250,0

🎯 Onde é útil?

✅ Antes de rodar relatórios grandes em rede, verificar se está lento.
✅ Equipes financeiras que acessam pastas centrais.
✅ TI → diagnóstico rápido sem depender de ferramentas externas.
✅ Empresas que usam VPN.


🔥 Por que é útil ?

Quase ninguém pensou em usar o Excel como medidor de performance de rede.
Isso normalmente é feito por softwares especializados, mas aqui pode ser integrado direto no fluxo de trabalho das planilhas.

Nenhum comentário:

Postar um comentário