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.

📘✨ Excel VBA na Prática: Diferença entre Activate e Select no Objeto Range

No Excel VBA, dois métodos muito usados são Activate e Select, aplicados ao objeto Range. Ambos parecem semelhantes porque destacam uma célula ou intervalo, mas existe uma diferença importante entre eles. 🚀


🔎 Definição

  • Range.Activate → Ativa uma célula ou intervalo, deixando-a como a célula ativa. Se for um intervalo, somente a primeira célula é ativada.

  • Range.Select → Seleciona uma célula ou intervalo completo, destacando todas as células do Range.

👉 Resumindo:

  • Activate = foca em uma célula específica.

  • Select = foca em um intervalo inteiro.


🧑‍💻 Exemplos práticos

1️⃣ Usando Activate

Sub ExemploActivate() Range("C5").Activate MsgBox "A célula ativa é: " & ActiveCell.Address End Sub

👉 Resultado: Apenas a célula C5 é ativada, mesmo que estivesse em um intervalo.


2️⃣ Usando Select

Sub ExemploSelect() Range("B2:D5").Select MsgBox "O intervalo selecionado é: " & Selection.Address End Sub

👉 Resultado: Todo o intervalo B2:D5 é selecionado.


3️⃣ Comparando na prática

Sub CompararActivateSelect() ' Ativar apenas uma célula Range("E10").Activate MsgBox "Activate -> célula ativa: " & ActiveCell.Address ' Selecionar um intervalo inteiro Range("F2:H6").Select MsgBox "Select -> intervalo selecionado: " & Selection.Address End Sub

Quando usar cada um?

  • Use Activate quando precisa trabalhar com uma célula de referência (por exemplo, inserir dados, verificar valores).

  • Use Select quando precisa destacar várias células ao mesmo tempo (por exemplo, formatar um intervalo inteiro).


💡 Dica profissional:
Evite usar Activate e Select em excesso. É mais eficiente trabalhar diretamente com objetos Range, sem depender da ativação/seleção — mas quando a interação com o usuário é importante, eles são muito úteis.


🟢📢 Consultoria Contábil Inteligente
💼 Abertura e registro de empresas no Simples Nacional
📊 Acompanhamento contábil e fiscal mensal
⚖️ Planejamento tributário estratégico para pagar só o justo

👉 Entre em contato e organize sua empresa com eficiência!

🎮 Apostila de Pygame para Leigos – Capítulo 1 O Grande Início: Instalando Tudo e Criando o Primeiro Jogo

 Seja muito bem-vindo, gênio do futuro! 🌟

Sim, estou falando de você mesmo. Se você abriu este material é porque já tem aquela centelha de curiosidade que diferencia os campeões dos meros mortais que passam a vida só jogando sem nunca pensar:
"Como será que esse joguinho foi feito?"

Parabéns! 🎉 Você já está 10 passos à frente de milhões de jogadores no planeta.


🤔 O que é o Pygame?

Imagine o Python como uma caixa de ferramentas mágica: martelo, chave de fenda, serrote, tudo ali.
Agora o Pygame é como um kit adicional cheio de brinquedos de luxo:

  • ferramentas para criar janelas,

  • desenhar imagens,

  • tocar músicas,

  • mover personagens,

  • detectar colisões.

Ou seja: com Pygame, você deixa de ser apenas consumidor de jogos e vira arquiteto de universos digitais. 🌌

E não se preocupe: não precisa ser um “nerd programador” com óculos de laboratório para aprender. Eu vou segurar sua mão virtualmente (sem suor, prometo 😅) e mostrar passo a passo.


🛠️ Instalando o Ambiente

  1. Instale o Python

    • Entre em https://www.python.org/downloads/

    • Baixe a versão mais recente (se tiver dúvida, clique no botão amarelo gigante, ele nunca erra).

    • Durante a instalação, marque a opção “Add Python to PATH” (isso é tipo dar superpoderes ao seu computador).

  2. Instale o Pygame

    • Abra o Prompt de Comando (Windows) ou Terminal (Linux/Mac).

    • Digite:

      pip install pygame
    • Se aparecer uma mensagem linda dizendo “Successfully installed pygame...”, dê um sorriso. Você é oficialmente um(a) futuro(a) criador(a) de jogos! 😎🎉


🖥️ Nosso Primeiro Jogo (Versão Bebê)

Chega de conversa, vamos ver código na prática.

Copie este código no Bloco de Notas (ou em um editor como o Thonny, VSCode, PyCharm, etc.) e salve como meu_primeiro_jogo.py.

# Importando o Pygame (traz todos os superpoderes de jogos) import pygame # Iniciando o Pygame (é como ligar o motor do carro) pygame.init() # Criando a janela do jogo (largura=800, altura=600) tela = pygame.display.set_mode((800, 600)) pygame.display.set_caption("Meu Primeiro Jogo - Você é um Gênio! 🏆") # Definindo uma cor (vermelho, verde, azul) cor_azul = (0, 120, 255) # Criando o loop do jogo (roda sem parar até o jogador fechar) rodando = True while rodando: # Verifica todos os eventos (teclado, mouse, fechar janela) for evento in pygame.event.get(): if evento.type == pygame.QUIT: # Se clicar no X da janela rodando = False # Preenche a tela com a cor azul tela.fill(cor_azul) # Atualiza a tela para o jogador ver a mágica pygame.display.update() # Fecha o jogo quando sair do loop pygame.quit()

🎉 O que vai acontecer?

  • Uma janela azul gigante vai se abrir.

  • Vai estar escrito no topo: “Meu Primeiro Jogo – Você é um Gênio!” (sim, porque você é 👑).

  • Você acabou de criar o embrião de um jogo completo.


🔎 Explicando linha por linha (como se fosse para minha avó 👵)

  • import pygame → traz a caixa mágica de ferramentas de jogos.

  • pygame.init() → liga o motor, tipo dar a partida no carro.

  • pygame.display.set_mode((800, 600)) → cria a janela do jogo com 800 pixels de largura e 600 de altura.

  • pygame.display.set_caption("...") → dá nome ao seu jogo.

  • cor_azul = (0, 120, 255) → define uma cor no formato RGB (Red, Green, Blue).

  • while rodando: → loop infinito (até você clicar no X).

  • for evento in pygame.event.get(): → verifica se alguém mexeu no teclado, mouse ou fechou a janela.

  • if evento.type == pygame.QUIT: → se clicou no X, o jogo acaba.

  • tela.fill(cor_azul) → pinta a tela de azul (ou qualquer cor que você quiser).

  • pygame.display.update() → mostra na tela as mudanças feitas.

  • pygame.quit() → desliga o jogo com elegância.


💡 Exercício Divertido

Troque a cor da tela!

  • Azul está legal, mas tente mudar para verde, rosa choque ou amarelo neon.

  • Dica: (255, 0, 0) é vermelho, (0, 255, 0) é verde, (255, 255, 0) é amarelo.


🎯 Conclusão do Capítulo

Você conseguiu:
✅ Instalar Python e Pygame
✅ Criar sua primeira janela de jogo
✅ Pintar a tela de azul (ou da cor que quiser)


👉 No próximo capítulo vamos colocar movimento na tela. Sim, você verá objetos correndo como atletas digitais, e tudo feito por você.

🔐 Post 1 – O que é Cibersegurança? Conceitos Básicos

 A cada dia, passamos mais tempo conectados: acessamos bancos, redes sociais, e-mails, fazemos compras online e até controlamos dispositivos inteligentes em casa. Mas, junto com essas facilidades, surgem riscos invisíveis que podem comprometer nossos dados e nossa privacidade. É aqui que entra a cibersegurança.

📌 O que é cibersegurança?

De forma simples, cibersegurança é o conjunto de práticas, ferramentas e medidas voltadas para proteger:

  • Computadores 🖥️

  • Celulares 📱

  • Redes 🌐

  • Dados pessoais e empresariais 📂

contra ameaças digitais como vírus, hackers, fraudes e espionagem.


⚠️ Por que isso importa para você?

Mesmo que você não seja um “expert em informática”, qualquer pessoa pode ser alvo de ataques. Exemplos comuns incluem:

  • Receber um e-mail falso fingindo ser do banco 🎣

  • Ter o celular infectado por um aplicativo malicioso 🦠

  • Usar Wi-Fi público e ter dados interceptados ☕

  • Perder fotos e documentos por um ataque de ransomware 💾


🛡️ Os 3 pilares da cibersegurança

Para entender melhor, especialistas costumam resumir a cibersegurança em três pilares:

  1. Confidencialidade 🔐
    Garantir que apenas pessoas autorizadas tenham acesso às informações.

    Exemplo: sua senha de e-mail não deve ser conhecida por ninguém além de você.

  2. Integridade 📑
    Assegurar que dados não sejam alterados de forma indevida.

    Exemplo: um boleto bancário não pode ser adulterado por criminosos.

  3. Disponibilidade ⏱️
    Garantir que sistemas e dados estejam acessíveis sempre que você precisar.

    Exemplo: conseguir acessar sua conta bancária online sem que esteja fora do ar por invasões.


🔍 Exemplo prático do dia a dia

Imagine que você vai pagar uma conta pela internet:

  • A confidencialidade protege seus dados do cartão.

  • A integridade garante que o valor pago não seja alterado.

  • A disponibilidade assegura que o site esteja acessível quando você precisar.


🧰 O que você já pode começar a fazer hoje

✔️ Manter o Windows e o celular sempre atualizados
✔️ Usar senhas fortes e diferentes para cada serviço
✔️ Evitar clicar em links suspeitos enviados por e-mail ou WhatsApp
✔️ Ativar o antivírus nativo do Windows (Defender) ou instalar um antivírus confiável


📜 Conclusão

Cibersegurança não é apenas para empresas ou para quem trabalha com tecnologia. É um cuidado essencial para qualquer pessoa que usa computador ou celular no dia a dia.
Nos próximos posts desta série, você aprenderá passo a passo como identificar riscos e aplicar medidas práticas para proteger seus dispositivos.

🔜 No próximo post (2), vamos entender a diferença entre vírus, malware, trojans e ransomware.

quinta-feira, 11 de setembro de 2025

📘✨ Excel VBA na Prática: Usando o Método Activate do Objeto Range

No Excel, quando queremos que uma célula ou intervalo fique ativo (como se tivesse sido clicado pelo usuário), usamos o método Activate. 🚀

Isso é útil quando você precisa destacar uma posição específica antes ou depois de executar uma macro, guiando o usuário no fluxo da automação.


🔎 Definição

  • Range.Activate → Ativa a célula ou intervalo especificado, deixando-o como a seleção atual no Excel.

  • Quando aplicado em um intervalo maior que uma célula, apenas a primeira célula do Range será ativada.


🧑‍💻 Exemplos práticos

1️⃣ Ativar uma célula específica

Sub AtivarCelula() Range("C5").Activate End Sub

👉 O cursor será movido para a célula C5, como se você tivesse clicado nela.


2️⃣ Ativar a primeira célula de um intervalo

Sub AtivarIntervalo() Range("B2:D10").Activate End Sub

👉 O Excel vai ativar a célula B2 (a primeira célula do intervalo).


3️⃣ Navegar dinamicamente até a última célula preenchida

Sub AtivarUltimaCelula() Dim UltimaCelula As Range Set UltimaCelula = Cells(Rows.Count, 1).End(xlUp) 'Última linha da coluna A UltimaCelula.Activate End Sub

👉 O Excel ativa a última célula preenchida da coluna A, muito útil em relatórios e tabelas grandes.


💡 Dica útil na automação:
O método Activate é ideal quando você deseja:

  • Levar o usuário até um ponto específico da planilha.

  • Garantir que, após rodar uma macro, a célula de referência fique em evidência.

  • Criar fluxos interativos, onde o usuário acompanha o que a macro está fazendo.


🟣📢 Sua Contabilidade Descomplicada
🏢 Abertura de empresas no Simples Nacional
🔎 Controle tributário mensal
💡 Planejamento tributário estratégico

👉 Deixe a burocracia comigo e cuide do que realmente importa: o seu negócio!

🌐 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.

🔢 Post 3 – Calculadora de Quatro Operações em Python 🧮🚀

No post anterior, criamos uma calculadora que fazia apenas soma ➕. Mas calculadora boa precisa ser mais completa, né?

Hoje vamos fazer um programa que pergunta ao usuário qual operação ele quer (soma, subtração, multiplicação ou divisão) e depois mostra o resultado.


🐣 Passo a passo do código

# Primeiro pedimos o primeiro número num1 = float(input("Digite o primeiro número: ")) # Usamos float() em vez de int(), porque float aceita números com casas decimais. # Depois pedimos o segundo número num2 = float(input("Digite o segundo número: ")) # Assim como acima, o valor digitado será convertido para número decimal (float). # Agora pedimos a operação desejada operacao = input("Digite a operação (+, -, *, /): ") # O usuário vai digitar o sinal da operação desejada. # Exemplo: + para soma, - para subtração, * para multiplicação, / para divisão. # Agora verificamos qual operação foi escolhida if operacao == "+": resultado = num1 + num2 # Se a operação for +, o resultado será a soma. elif operacao == "-": resultado = num1 - num2 # Se a operação for -, o resultado será a subtração. elif operacao == "*": resultado = num1 * num2 # Se a operação for *, o resultado será a multiplicação. elif operacao == "/": resultado = num1 / num2 # Se a operação for /, o resultado será a divisão. else: resultado = "Operação inválida!" # Caso o usuário digite algo diferente, mostramos que a operação não existe. # Por fim mostramos o resultado print("Resultado:", resultado) # Exibe a palavra "Resultado:" seguida do valor calculado.

💻 Exemplo de saída

Digite o primeiro número: 10 Digite o segundo número: 5 Digite a operação (+, -, *, /): * Resultado: 50.0

📌 O que você aprendeu hoje?

  • float() serve para trabalhar com números decimais.

  • Usamos if, elif e else para tomar decisões.

  • Criamos uma lógica que permite escolher entre várias operações.


🎯 Desafio extra

  1. Adicione a operação de potência usando **.

  2. Adicione a operação de módulo (resto da divisão) usando %.

  3. Trate o erro de divisão por zero (quando o usuário digitar 0 no segundo número).


⏭️ O que vem por aí?

No próximo post vamos criar um Jogo da Adivinhação 🎲, onde o Python escolhe um número secreto e você precisa descobrir.