quinta-feira, 11 de setembro de 2025

📊 SQL no Excel – Post 2: Filtrando Clientes com WHERE

No primeiro projeto, vimos como buscar todos os registros de uma tabela no Excel com o SELECT *.

Mas, muitas vezes, você não precisa de todos os dados — apenas de uma parte deles.

É aí que entra o poderoso comando WHERE! 🚀


🎯 Projeto do Dia: Listar clientes de uma cidade específica

1. Cenário

Temos a mesma tabela Clientes no Excel:

IDNomeCidadeIdade
1João SilvaSão Paulo32
2Maria SouzaRio de Janeiro27
3Carlos LimaBelo Horizonte41
4Ana SantosCuritiba36
5Fernanda AlvesSão Paulo29

Nosso objetivo será filtrar apenas os clientes da cidade de São Paulo.


2. Código VBA com SQL

Abra o Editor do VBA (ALT + F11), insira um novo módulo e cole o seguinte código:

Sub FiltrarClientes() ' Declaração de variáveis Dim conn As Object Dim rs As Object Dim strSQL As String Dim ws As Worksheet ' Criar conexão Set conn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") ' Conectar ao arquivo Excel conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";" ' SQL com filtro WHERE strSQL = "SELECT * FROM [Clientes$] WHERE Cidade = 'São Paulo'" ' Executar consulta rs.Open strSQL, conn ' Criar aba de resultados Set ws = ThisWorkbook.Sheets.Add ws.Name = "Clientes_SP" ' Copiar resultados ws.Range("A1").CopyFromRecordset rs ' Fechar conexões rs.Close conn.Close MsgBox "Consulta concluída com sucesso!", vbInformation End Sub

3. Explicando o Código 📝

  • WHERE Cidade = 'São Paulo' → Esse é o coração da consulta!
    Ele diz ao Excel/SQL: "me traga apenas as linhas em que a coluna Cidade seja igual a São Paulo".

  • SELECT * FROM [Clientes$] → Como antes, significa "traga todas as colunas da tabela Clientes".

  • rs.Open strSQL, conn → Executa a consulta filtrada.

  • ws.Range("A1").CopyFromRecordset rs → Cola somente os registros que atenderam ao filtro.


4. Resultado esperado 📋

A nova aba chamada Clientes_SP mostrará:

IDNomeCidadeIdade
1João SilvaSão Paulo32
5Fernanda AlvesSão Paulo29

📌 O que você aprendeu hoje?

✅ Como usar WHERE para filtrar dados em SQL.
✅ Como criar consultas mais específicas no Excel.
✅ Como retornar apenas clientes de uma determinada cidade.


👉 No próximo post (Post 3), vamos aprender a usar o WHERE com números – por exemplo, listar clientes com idade maior que 30.


📢 E lembre-se...

Além de aprender SQL no Excel, você também pode contar comigo como contador especializado em profissionais de serviços.
Posso te ajudar com:
✅ Abertura e registro de empresas no Simples Nacional
✅ Acompanhamento mensal contábil
✅ Planejamento tributário para pagar menos impostos

💼 Fale comigo e organize sua vida financeira com segurança!

quarta-feira, 10 de setembro de 2025

📊 SQL no Excel – Post 1: Seu Primeiro SELECT no Excel

 👋 Bem-vindo(a) ao primeiro post da nossa série de SQL no Excel.

Se você nunca usou SQL antes, não se preocupe: vamos aprender juntos, passo a passo, com projetos práticos que você poderá aplicar direto no Excel.

Hoje vamos criar nosso primeiro projeto em SQL dentro do Excel, aprendendo o comando mais básico e essencial: SELECT.


🎯 Projeto do Dia: Listando Clientes com SQL no Excel

1. Cenário

Imagine que você tem uma planilha no Excel chamada Clientes.xlsx, com a seguinte tabela:

IDNomeCidadeIdade
1João SilvaSão Paulo32
2Maria SouzaRio de Janeiro27
3Carlos LimaBelo Horizonte41
4Ana SantosCuritiba36

Nosso objetivo é listar todos os clientes da planilha usando SQL dentro do Excel.


2. Como preparar o ambiente

👉 Antes de rodar SQL no Excel, precisamos conectar a planilha como se fosse um banco de dados:

  1. Abra o Excel.

  2. Pressione ALT + F11 para abrir o Editor do VBA.

  3. No menu, clique em Inserir → Módulo.

  4. Cole o código abaixo.


3. Código VBA com SQL

Sub ListarClientes() ' Declaração de variáveis Dim conn As Object Dim rs As Object Dim strSQL As String Dim ws As Worksheet ' Criar conexão com o Excel como banco de dados Set conn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") ' Caminho do arquivo Excel (ajuste para o seu arquivo) conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";" ' Escrevendo a SQL para buscar todos os registros strSQL = "SELECT * FROM [Clientes$]" ' Executando a consulta rs.Open strSQL, conn ' Criando uma nova aba para o resultado Set ws = ThisWorkbook.Sheets.Add ws.Name = "Resultado_SQL" ' Copiando o resultado para a aba nova ws.Range("A1").CopyFromRecordset rs ' Fechando conexões rs.Close conn.Close MsgBox "Consulta concluída com sucesso!", vbInformation End Sub

4. Explicando o Código (linha por linha) 📝

  1. Dim conn As Object → cria a conexão com o Excel.

  2. Dim rs As Object → cria o recordset, que guarda o resultado da consulta.

  3. conn.Open ... → conecta o Excel como se fosse um banco de dados.

  4. strSQL = "SELECT * FROM [Clientes$]" → aqui está a SQL! O SELECT * significa "selecione todas as colunas da tabela Clientes".

  5. rs.Open strSQL, conn → executa a consulta.

  6. ws.Range("A1").CopyFromRecordset rs → joga os dados retornados para uma nova aba no Excel.

  7. MsgBox → apenas mostra uma mensagem de sucesso.


5. Resultado esperado 📋

Depois de rodar a macro ListarClientes, você terá uma nova aba chamada Resultado_SQL, com a mesma lista de clientes que estava na planilha original.

Ou seja, seu primeiro SELECT no Excel via SQL foi executado com sucesso! 🚀


📌 O que você aprendeu hoje?

✅ Como usar SQL dentro do Excel.
✅ Como funciona o comando SELECT *.
✅ Como rodar uma consulta simples e trazer todos os dados de uma planilha.


👉 No próximo post, vamos aprender a filtrar registros usando o WHERE – por exemplo, listar apenas clientes de uma cidade específica.


📢 Precisa de ajuda contábil?

Sou contador especializado em profissionais de serviços. Posso ajudar você com:
✅ Abertura e registro de empresas no Simples Nacional
✅ Acompanhamento mensal da contabilidade
✅ Planejamento tributário para pagar menos impostos

💼 Entre em contato e simplifique sua vida financeira!

📧💸 Automação em Python: Assistente Inteligente de E-mails de Cobrança 📧💸

Resumo rápido: um script em Python que lê uma planilha com clientes, gera faturas em PDF, envia e-mails personalizados via Outlook e registra tudo num log. Ideal para reduzir tempo com cobranças e manter histórico para auditoria.


Por que isso ajuda sua empresa? 🤔

  • Evita retrabalho manual (copiar/colar e-mails).

  • Mantém linguagem padronizada e profissional.

  • Gera prova de envio (PDF + log).

  • Ajuda a acelerar recebimentos e reduzir inadimplência.


O que você precisa ter antes de rodar 🛠️

  1. Windows com Microsoft Outlook instalado (automatização usa Outlook).

  2. Python 3.8+ instalado.

  3. Bibliotecas: pandas, openpyxl, pywin32, fpdf.
    Instale com:

    pip install pandas openpyxl pywin32 fpdf
  4. Uma planilha Excel (clientes.xlsx) com estas colunas (exatas):
    Cliente | Email | Valor | Vencimento | Pago
    Exemplo:

    ClienteEmailValorVencimentoPago
    Acme Ltdacliente@acme.com1500.02025-08-10Não
    Bento SAfinanceiro@bento.br320.52025-09-01Sim

Código completo (salve como assistente_cobranca.py) 💻

# assistente_cobranca.py import os # 1 import pandas as pd # 2 import win32com.client as win32 # 3 from datetime import datetime # 4 from fpdf import FPDF # 5 import unicodedata # 6 # Configurações EXCEL_INPUT = "clientes.xlsx" # 7 LOG_FILE = "log_cobrancas.xlsx" # 8 PASTA_FATURAS = "faturas" # 9 os.makedirs(PASTA_FATURAS, exist_ok=True) # 10 def nome_arquivo_seguro(texto): # 11 nf = unicodedata.normalize('NFKD', texto).encode('ASCII', 'ignore').decode() # 12 nf = "".join(c for c in nf if c.isalnum() or c in (' ', '-', '_')).strip() # 13 nf = nf.replace(" ", "_") # 14 return nf.lower() + ".pdf" # 15 def gerar_pdf(cliente, valor, vencimento, pasta=PASTA_FATURAS): # 16 nome = nome_arquivo_seguro(f"fatura_{cliente}") # 17 caminho = os.path.join(pasta, nome) # 18 pdf = FPDF() # 19 pdf.add_page() # 20 pdf.set_font("Arial", size=12) # 21 pdf.cell(0, 10, txt=f"Fatura - {cliente}", ln=1, align="C") # 22 pdf.ln(5) # 23 pdf.cell(0, 10, txt=f"Valor: R$ {valor:,.2f}", ln=1) # 24 pdf.cell(0, 10, txt=f"Vencimento: {vencimento.strftime('%d/%m/%Y')}", ln=1)# 25 pdf.output(caminho) # 26 return caminho # 27 def enviar_emails(): # 28 df = pd.read_excel(EXCEL_INPUT, engine="openpyxl") # 29 outlook = win32.Dispatch("Outlook.Application") # 30 enviados = [] # 31 for idx, row in df.iterrows(): # 32 cliente = str(row.get("Cliente", "")).strip() # 33 email = str(row.get("Email", "")).strip() # 34 valor = float(row.get("Valor", 0)) # 35 venc = pd.to_datetime(row.get("Vencimento")) # 36 pago = str(row.get("Pago", "")).strip().lower() # 37 dias_atraso = (datetime.now() - venc.to_pydatetime()).days # 38 if not email or pago in ("sim", "s", "yes", "true"): # 39 continue # 40 if dias_atraso <= 0: # 41 continue # 42 if dias_atraso < 10: # 43 mensagem = f"Olá {cliente},\n\nSua fatura venceu em {venc:%d/%m/%Y}. Pode regularizar, por favor?\n\nObrigado!" # 44 elif dias_atraso < 30: # 45 mensagem = f"Olá {cliente},\n\nSua fatura de R$ {valor:,.2f} está em aberto há {dias_atraso} dias. Precisamos regularizar.\n\nAtt." # 46 else: # 47 mensagem = f"Atenção {cliente},\n\nSua fatura está vencida há {dias_atraso} dias. Entre em contato para evitar medidas.\n\nAt.te." # 48 fatura = gerar_pdf(cliente, valor, venc) # 49 mail = outlook.CreateItem(0) # 50 mail.To = email # 51 mail.Subject = f"Cobrança - {cliente} - R$ {valor:,.2f}" # 52 mail.Body = mensagem # 53 mail.Attachments.Add(os.path.abspath(fatura)) # 54 try: mail.Send() # 55 enviados.append({"Cliente": cliente, "Email": email, "Valor": valor, "Vencimento": venc, "DiasAtraso": dias_atraso, "Fatura": fatura, "EnviadoEm": datetime.now()}) # 56 print(f"E-mail enviado para {cliente} -> {email}") # 57 except Exception as e: print(f"Falha ao enviar para {cliente}: {e}") # 58 if enviados: # 59 df_log = pd.DataFrame(enviados) # 60 if os.path.exists(LOG_FILE): # 61 df_antigo = pd.read_excel(LOG_FILE, engine="openpyxl") # 62 df_novo = pd.concat([df_antigo, df_log], ignore_index=True) # 63 df_novo.to_excel(LOG_FILE, index=False) # 64 else: df_log.to_excel(LOG_FILE, index=False) # 65 if __name__ == "__main__": # 66 enviar_emails() # 67

Explicação linha por linha (linguagem simples) 🧾🔍

Vou explicar cada linha numerada acima. Se preferir, copie o código e acompanhe.

1 import os

  • Importa o módulo que ajuda a trabalhar com pastas e arquivos (criar pasta, juntar caminhos).

2 import pandas as pd

  • Importa o pandas, usado para ler e escrever planilhas Excel e manipular tabelas de dados.

3 import win32com.client as win32

  • Importa a biblioteca que permite controlar o Outlook no Windows (enviar e-mails automaticamente).

4 from datetime import datetime

  • Traz a classe datetime para calcular datas e horas (ex.: quantos dias de atraso).

5 from fpdf import FPDF

  • Importa o gerador de PDF simples, usado para criar a fatura em PDF.

6 import unicodedata

  • Usado para “limpar” nomes (tirar acentos) e gerar nomes de arquivos seguros.

7 EXCEL_INPUT = "clientes.xlsx"

  • Nome do arquivo Excel que o script vai ler (coloque sua planilha com este nome ou altere aqui).

8 LOG_FILE = "log_cobrancas.xlsx"

  • Nome do arquivo onde vamos guardar o registro dos e-mails enviados.

9 PASTA_FATURAS = "faturas"

  • Pasta onde os PDFs das faturas serão salvos.

10 os.makedirs(PASTA_FATURAS, exist_ok=True)

  • Cria a pasta faturas se ela não existir (não dá erro se já existir).

11 def nome_arquivo_seguro(texto):

  • Início de uma função que transforma texto (nome do cliente) em nome de arquivo seguro.

12 nf = unicodedata.normalize('NFKD', texto).encode('ASCII', 'ignore').decode()

  • Remove acentos e caracteres especiais (transforma 'José' em 'Jose').

13 nf = "".join(c for c in nf if c.isalnum() or c in (' ', '-', '_')).strip()

  • Mantém só letras, números, espaços, traço e underline — elimina outros símbolos.

14 nf = nf.replace(" ", "_")

  • Substitui espaços por underscore para formar nomes de arquivo amigáveis.

15 return nf.lower() + ".pdf"

  • Retorna o nome final em minúsculas com extensão .pdf.

16 def gerar_pdf(cliente, valor, vencimento, pasta=PASTA_FATURAS):

  • Inicia a função que cria o PDF da fatura para um cliente.

17 nome = nome_arquivo_seguro(f"fatura_{cliente}")

  • Cria um nome seguro para o PDF, usando o nome do cliente.

18 caminho = os.path.join(pasta, nome)

  • Monta o caminho completo do arquivo (pasta + nome do arquivo).

19 pdf = FPDF()

  • Cria um objeto PDF vazio para começar a escrever.

20 pdf.add_page()

  • Adiciona a primeira página ao PDF.

21 pdf.set_font("Arial", size=12)

  • Define a fonte (tipo e tamanho) para escrever no PDF.

22 pdf.cell(0, 10, txt=f"Fatura - {cliente}", ln=1, align="C")

  • Escreve o título da fatura (centralizado).

23 pdf.ln(5)

  • Pula uma linha para dar espaço.

24 pdf.cell(0, 10, txt=f"Valor: R$ {valor:,.2f}", ln=1)

  • Escreve o valor formatado com duas casas decimais.

25 pdf.cell(0, 10, txt=f"Vencimento: {vencimento.strftime('%d/%m/%Y')}", ln=1)

  • Escreve a data de vencimento no formato dia/mês/ano.

26 pdf.output(caminho)

  • Salva o arquivo PDF no disco no caminho criado.

27 return caminho

  • Retorna o caminho do PDF gerado (para anexar no e-mail).

28 def enviar_emails():

  • Início da função principal que faz a leitura da planilha, gera PDFs e envia e-mails.

29 df = pd.read_excel(EXCEL_INPUT, engine="openpyxl")

  • Lê a planilha clientes.xlsx para uma tabela (df = data frame).

30 outlook = win32.Dispatch("Outlook.Application")

  • Conecta ao Outlook para poder criar e enviar e-mails.

31 enviados = []

  • Lista vazia para registrar (na memória) os envios bem sucedidos.

32 for idx, row in df.iterrows():

  • Começa a percorrer cada linha da planilha (cada cliente).

33 cliente = str(row.get("Cliente", "")).strip()

  • Pega o nome do cliente da linha; transforma em texto e limpa espaços extras.

34 email = str(row.get("Email", "")).strip()

  • Pega o e-mail do cliente.

35 valor = float(row.get("Valor", 0))

  • Lê o valor (número) da fatura; se não tiver, usa 0.

36 venc = pd.to_datetime(row.get("Vencimento"))

  • Converte a data de vencimento para um objeto de data do pandas.

37 pago = str(row.get("Pago", "")).strip().lower()

  • Verifica na coluna "Pago" se a fatura já foi quitada (texto em minúsculo).

38 dias_atraso = (datetime.now() - venc.to_pydatetime()).days

  • Calcula quantos dias se passaram desde o vencimento (dias de atraso).

39 if not email or pago in ("sim", "s", "yes", "true"):

  • Se não tiver e-mail ou se a fatura estiver marcada como paga, pula este cliente.

40 continue

  • Pula para o próximo cliente na planilha.

41 if dias_atraso <= 0:

  • Se não há atraso (vencimento futuro ou hoje), pula também.

42 continue

  • Pula para o próximo registro.

43 if dias_atraso < 10:

  • Se o atraso for menor que 10 dias — mensagem mais suave.

44 mensagem = f"... (texto educado) ..."

  • Define o texto do e-mail para esse caso (você verá no código real).

45 elif dias_atraso < 30:

  • Se atraso entre 10 e 29 dias — mensagem mais direta.

46 mensagem = f"... (texto intermediário) ..."

  • Texto correspondente ao caso.

47 else:

  • Se 30 dias ou mais — mensagem mais firme.

48 mensagem = f"... (texto firme) ..."

  • Texto final para atraso crítico.

49 fatura = gerar_pdf(cliente, valor, venc)

  • Chama a função para criar o PDF da fatura e guarda o caminho do arquivo.

50 mail = outlook.CreateItem(0)

  • Cria uma nova mensagem de e-mail no Outlook.

51 mail.To = email

  • Define o destinatário.

52 mail.Subject = f"Cobrança - {cliente} - R$ {valor:,.2f}"

  • Define o assunto do e-mail (útil para organização).

53 mail.Body = mensagem

  • Coloca o texto no corpo do e-mail.

54 mail.Attachments.Add(os.path.abspath(fatura))

  • Anexa o PDF que acabamos de gerar.

55 mail.Send()

  • Envia o e-mail (pode abrir aviso de segurança no Outlook em alguns PCs).

56 enviados.append({...})

  • Se deu certo, guardamos dados sobre esse envio (cliente, data, arquivo).

57 print(f"E-mail enviado para {cliente} -> {email}")

  • Imprime no terminal que o e-mail foi enviado (útil para acompanhar execução).

58 except Exception as e: / print(f"Falha...")

  • Se der erro no envio, registra na tela qual foi o problema (não para todo o script).

59 if enviados:

  • Depois de terminar a varredura, se houver envios bem sucedidos, vamos gravar no log.

60 df_log = pd.DataFrame(enviados)

  • Converte a lista de envios em uma tabela (para salvar no Excel).

61 if os.path.exists(LOG_FILE):

  • Se o arquivo de log já existe, vamos anexar ao que já tem.

62 df_antigo = pd.read_excel(LOG_FILE, engine="openpyxl")

  • Lê o log antigo.

63 df_novo = pd.concat([df_antigo, df_log], ignore_index=True)

  • Junta o antigo com os novos registros.

64 df_novo.to_excel(LOG_FILE, index=False)

  • Salva tudo de volta no arquivo de log (completo).

65 else: df_log.to_excel(LOG_FILE, index=False)

  • Se não havia log, cria um novo com os envios.

66 if __name__ == "__main__":

  • Padrão Python: se você rodar este arquivo diretamente, executa o que vem a seguir.

67 enviar_emails()

  • Chama a função principal para começar o processo.


Como usar — passo a passo simples ✅

  1. Coloque assistente_cobranca.py e clientes.xlsx na mesma pasta.

  2. Abra o terminal (Prompt) nessa pasta.

  3. Instale dependências: pip install pandas openpyxl pywin32 fpdf

  4. Rode: python assistente_cobranca.py

  5. Observe no terminal as mensagens de sucesso/erro. Verifique a pasta faturas/ e o arquivo log_cobrancas.xlsx.


Dicas importantes e boas práticas ⚠️

  • Teste primeiro com 1 ou 2 e-mails (coloque seu próprio e-mail) antes de rodar em toda base.

  • Outlook pode mostrar um alerta de segurança; algumas empresas bloqueiam automações — consulte o time de TI.

  • Não use para spam: envie apenas cobranças válidas e respeite regras de comunicação.

  • Mantenha backup da planilha original antes de rodar.


Variações e melhorias que você pode pedir depois 🔧

  • Enviar em lotes (por ex. 50 por vez).

  • Integração com SMTP (para quem não usa Outlook).

  • HTML no corpo do e-mail (assinatura com logo).

  • Interface simples em Tkinter para selecionar arquivo e rodar com 1 botão.

  • Agendamento diário (via Agendador de Tarefas do Windows).


Precisa de suporte contábil? 📞 

Sou contador e ajudo profissionais e empresas com:

  • Abertura e registro de empresas no Simples Nacional;

  • Acompanhamento mensal da contabilidade;

  • Tributação e planejamento tributário.

🔢 Post 2 – Sua primeira calculadora em Python! 🧮✨

 Você já aprendeu a mostrar mensagens na tela e até pedir o nome do usuário (Post 1). Agora vamos dar um passo a mais: criar uma calculadora simples que soma dois números.

Sim, já vamos para um projeto útil de verdade 😃.


🐣 Passo a passo do código

# Primeiro pedimos o primeiro número num1 = input("Digite o primeiro número: ") # input() mostra a pergunta e espera o usuário digitar algo no teclado. # O que for digitado será guardado dentro da variável num1. # Importante: por padrão, o input() sempre guarda como texto (string). # Depois pedimos o segundo número num2 = input("Digite o segundo número: ") # Aqui acontece a mesma coisa, o valor digitado vai para a variável num2. # Precisamos converter os valores para números inteiros num1 = int(num1) # int() transforma o valor que estava em formato de texto para número inteiro. num2 = int(num2) # Agora fazemos a soma resultado = num1 + num2 # O símbolo + faz a operação de adição entre os dois números. # Por fim mostramos o resultado na tela print("A soma é:", resultado) # print() exibe a frase "A soma é:" seguida do valor guardado na variável resultado.

💻 Exemplo de saída

Digite o primeiro número: 5 Digite o segundo número: 7 A soma é: 12

📌 O que você aprendeu hoje?

  • input() sempre guarda valores como texto (string).

  • Usamos int() para transformar texto em número inteiro.

  • Guardamos valores em variáveis (num1, num2, resultado).

  • Fizemos uma operação matemática real com Python! 🎉


🎯 Desafio extra

Tente modificar o código para fazer subtração (-), multiplicação (*) e divisão (/).
👉 Dica: basta trocar o sinal + pelo operador desejado.


⏭️ O que vem por aí?

No próximo post, vamos transformar essa calculadora em algo ainda mais poderoso: uma Calculadora de Quatro Operações, onde o usuário escolhe se quer somar, subtrair, multiplicar ou dividir! 🔥


💬 E aí, conseguiu somar seus primeiros números em Python?

🛰️ Automação em VBA: Scanner de Disponibilidade de Arquivos em Rede

 🧐 O Problema

Em ambientes empresariais:

  • Existem planilhas críticas salvas em pastas de rede.

  • Muitas vezes alguém tenta abrir e… ❌ “Arquivo não encontrado” ou “Rede indisponível”.

  • Não existe uma forma rápida de o próprio Excel testar se os arquivos estão acessíveis antes de usá-los em macros ou relatórios.


💡 A Solução

Criar uma automação em VBA que funciona como um scanner de arquivos de rede:

  • Lê uma lista de caminhos de arquivos (armazenada em uma aba chamada "MapeamentoRede").

  • Testa se cada arquivo realmente existe na rede.

  • Retorna em uma aba "StatusRede" com:

    • 📂 Caminho do arquivo

    • ✅ Disponível ou ❌ Não encontrado

    • ⏱️ Data/hora do último teste

Isso transforma o Excel em um validador de links de rede corporativa.


🚀 Como Funciona

  1. Na aba "MapeamentoRede", o usuário lista os arquivos da rede que deseja monitorar.
    Exemplo:

    Caminho do Arquivo
    \Servidor01\Financeiro\Vendas.xlsx
    \Servidor02\RH\Folha.xlsx
    \Servidor03\TI\Inventário.xlsx
  2. Executa a macro.

  3. Na aba "StatusRede", o VBA preenche automaticamente o resultado da checagem.


🧑‍💻 Código VBA

Sub ScannerArquivosRede() Dim wsMap As Worksheet, wsStatus As Worksheet Dim ultimaLinha As Long, i As Long Dim caminho As String, existe As Boolean ' Define as planilhas Set wsMap = ThisWorkbook.Sheets("MapeamentoRede") ' 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:C1").Value = Array("Caminho do Arquivo", "Status", "Última Verificação") ' Última linha na aba de mapeamento ultimaLinha = wsMap.Cells(wsMap.Rows.Count, 1).End(xlUp).Row ' Varre cada caminho listado For i = 2 To ultimaLinha caminho = wsMap.Cells(i, 1).Value If Dir(caminho) <> "" Then wsStatus.Cells(i, 1).Value = caminho wsStatus.Cells(i, 2).Value = "✅ Disponível" Else wsStatus.Cells(i, 1).Value = caminho wsStatus.Cells(i, 2).Value = "❌ Não encontrado" End If wsStatus.Cells(i, 3).Value = Now Next i MsgBox "🔎 Verificação concluída! Veja a aba 'StatusRede'.", vbInformation End Sub

📊 Exemplo de saída (StatusRede)

Caminho do ArquivoStatusÚltima Verificação
\Servidor01\Financeiro\Vendas.xlsx✅ Disponível06/09/2025 10:30:15
\Servidor02\RH\Folha.xlsx❌ Não encontrado06/09/2025 10:30:15
\Servidor03\TI\Inventário.xlsx✅ Disponível06/09/2025 10:30:15

🎯 Onde é útil?

✅ Controle de links críticos de relatórios.
✅ Auditoria de acessibilidade em pasta de rede compartilhada.
✅ Evitar erros em macros que dependem de arquivos externos.
✅ Monitoramento de servidores corporativos.


🔥 Por que é útil ?

Pouca gente pensa em usar Excel VBA como um monitor de acessibilidade de arquivos em rede.
Normalmente isso é feito com scripts de TI (PowerShell, Python).
Aqui, qualquer usuário corporativo pode rodar direto do Excel.

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

Quando trabalhamos no Excel, muitas vezes precisamos lidar com intervalos múltiplos (não contíguos), como quando selecionamos várias células separadas segurando a tecla CTRL.

No VBA, o objeto Range possui o método Areas, que facilita a manipulação desses conjuntos de intervalos. 🚀


🔎 Definição

  • Range.Areas → Retorna uma coleção de áreas (subintervalos) dentro de um intervalo múltiplo.

  • Cada área pode ser acessada individualmente como um objeto Range.


🧑‍💻 Exemplos práticos

1️⃣ Descobrir quantas áreas existem em uma seleção

Sub ContarAreas() Dim TotalAreas As Long TotalAreas = Selection.Areas.Count MsgBox "A seleção possui " & TotalAreas & " áreas diferentes." End Sub

👉 Se você selecionar, por exemplo, A1:A5 e C1:C5, o resultado será 2 áreas.


2️⃣ Trabalhar com cada área separadamente

Sub DestacarAreas() Dim i As Long For i = 1 To Selection.Areas.Count Selection.Areas(i).Interior.Color = vbYellow Next i End Sub

👉 Cada área da seleção será destacada em amarelo.


3️⃣ Usar cada área em cálculos

Sub SomarAreas() Dim i As Long, Soma As Double For i = 1 To Selection.Areas.Count Soma = Soma + WorksheetFunction.Sum(Selection.Areas(i)) Next i MsgBox "A soma total das áreas selecionadas é: " & Soma End Sub

👉 O VBA percorre cada área e calcula o total, somando tudo em uma única saída.


💡 Dica útil na automação:
O método Areas é ideal quando o usuário faz seleções personalizadas no Excel e você precisa percorrer cada conjunto de células para formatar, validar ou calcular valores de forma independente.


🟢📢 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 mantenha sua empresa organizada com segurança!

terça-feira, 9 de setembro de 2025

🐍 Post 1 – Olá Mundo em Python: a primeira linha do seu futuro! 🚀

Bem-vindo(a) à Série de 100 Projetos em Python para Iniciantes! 🎉

Se você sempre quis aprender programação, mas achava que era coisa de gente com cara de gênio 🤓, respira fundo: você está no lugar certo!

Aqui, cada post será um mini-projeto prático, divertido e direto ao ponto. Ou seja: nada de ficar só na teoria chata 📚. Você vai aprender Python construindo coisas de verdade — desde scripts simples até sistemas completos com banco de dados, automação e até inteligência artificial.

👉 Spoiler: no post 100 você vai ter feito um sistema profissional com interface, relatórios em Excel e PDF, automação de navegador e muito mais.


🐣 O primeiro passo: Olá, Mundo! 🌍

Se você nunca programou, relaxa: todo programador começou do zero, escrevendo a famosa frase mágica “Olá, Mundo!”.

É um ritual de passagem. É como acender a chama olímpica da sua carreira na programação 🔥.

Aqui vai seu primeiro código em Python:

print("Olá, Mundo!") # O comando print() serve para mostrar algo na tela. # O texto entre aspas ("Olá, Mundo!") é o que será exibido.

Saída no console:

Olá, Mundo!

🎯 O que acontece aqui?

  • print() → função que exibe algo na tela.

  • "Olá, Mundo!" → texto (também chamado de string) que você mandou o Python mostrar.


🛠️ Projeto do dia: sua primeira mensagem personalizada

Agora vamos deixar esse programa um pouquinho mais divertido: em vez de mostrar só “Olá, Mundo!”, ele vai perguntar seu nome e dar boas-vindas.

nome = input("Qual é o seu nome? ") # input() pede que o usuário digite alguma coisa. # O texto dentro de aspas ("Qual é o seu nome? ") # é a pergunta que aparece na tela. # O que você digitar será guardado na variável "nome". print("Olá,", nome, "! Bem-vindo(a) ao Python 🚀") # O print() aqui mostra o texto "Olá," seguido do valor que está dentro da variável nome. # Depois junta com a frase final "Bem-vindo(a) ao Python 🚀".

Exemplo de saída:

Qual é o seu nome? José Olá, José ! Bem-vindo(a) ao Python 🚀

✨ Missão cumprida!

Parabéns 🎉, você escreveu seu primeiro programa em Python.

📌 O que você aprendeu hoje:

  • Usar print() para mostrar informações.

  • Usar input() para perguntar algo ao usuário.

  • Guardar o que o usuário digitou dentro de uma variável (nome).


⏭️ O que vem por aí?

No próximo post vamos criar uma calculadora simples 🔢, que vai somar dois números informados por você.


👉 Não esquece de acompanhar a série “100 Projetos em Python” aqui no blog!
Se você seguir passo a passo, vai sair de iniciante absoluto até criar sistemas profissionais.


💬 Me conta nos comentários: conseguiu rodar seu primeiro código?