sexta-feira, 12 de setembro de 2025

📢 Automação Inédita em VBA: Alerta Automático de Arquivos Alterados em Rede

 🧐 O Problema

No ambiente empresarial, muitos trabalham em pastas de rede compartilhadas.

  • Vários usuários editam o mesmo Excel ou relatório em PDF.

  • Ninguém sabe quando um arquivo foi atualizado.

  • Isso gera dúvidas: "Já atualizaram o relatório de hoje?" ou "Será que o arquivo está pronto para envio?"


💡 A Solução

Criar um sistema de alerta em tempo real dentro do Excel:

  • Você informa uma pasta de rede (ex.: \\Servidor\Financeiro\Relatorios).

  • O VBA monitora os arquivos dessa pasta.

  • Quando um arquivo for alterado, criado ou substituído, o Excel:

    • Exibe um aviso em uma aba de log

    • Mostra o nome do arquivo, data/hora da alteração e usuário (se disponível)

    • Pode até emitir um som de alerta 🔔

Assim, você sempre sabe quem mexeu no quê e quando.


🚀 Como Funciona

  1. Na aba "Config", o usuário define o caminho da pasta a monitorar.

  2. Roda a macro de monitoramento.

  3. A aba "LogAlteracoes" recebe as mudanças detectadas.


🧑‍💻 Código VBA

Option Explicit Sub MonitorarAlteracoesRede() Dim pasta As String Dim fso As Object, pastaObj As Object, arquivo As Object Dim ws As Worksheet Dim ultimaLinha As Long ' Define a aba de configuração Set ws = ThisWorkbook.Sheets("Config") pasta = ws.Range("A2").Value ' Caminho da pasta If pasta = "" Then MsgBox "⚠️ Defina o caminho da pasta em Config! (célula A2)", vbExclamation Exit Sub End If ' Cria aba de log se não existir On Error Resume Next Set ws = ThisWorkbook.Sheets("LogAlteracoes") If ws Is Nothing Then Set ws = Sheets.Add ws.Name = "LogAlteracoes" ws.Range("A1:D1").Value = Array("Arquivo", "Data Modificação", "Tamanho (KB)", "Verificado em") End If On Error GoTo 0 Set fso = CreateObject("Scripting.FileSystemObject") Set pastaObj = fso.GetFolder(pasta) ' Percorre arquivos da pasta For Each arquivo In pastaObj.Files ultimaLinha = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1 ws.Cells(ultimaLinha, 1).Value = arquivo.Name ws.Cells(ultimaLinha, 2).Value = arquivo.DateLastModified ws.Cells(ultimaLinha, 3).Value = Round(arquivo.Size / 1024, 2) ws.Cells(ultimaLinha, 4).Value = Now Next arquivo MsgBox "📢 Monitoramento concluído! Veja a aba 'LogAlteracoes'.", vbInformation End Sub

📊 Exemplo de saída (LogAlteracoes)

ArquivoData ModificaçãoTamanho (KB)Verificado em
Relatorio_Vendas.xls12/09/2025 08:45:1252412/09/2025 09:00:01
Balanço2025.pdf12/09/2025 08:50:1021012/09/2025 09:00:01

🎯 Onde é útil?

✅ Departamentos financeiros → acompanhar quando um relatório é atualizado.
✅ RH → monitorar planilhas de ponto e folha.
✅ Equipes de projetos → saber quando um documento central foi alterado.
✅ Controle de versões simples, sem precisar de software extra.


🔥 Por que é útil?

Pouca gente imagina usar o Excel como "fiscal de pastas em rede".
Normalmente, isso é feito por softwares de TI — mas aqui, qualquer usuário pode configurar direto em sua planilha.

Nenhum comentário:

Postar um comentário