Manipulando Dados do Excel como Banco de Dados

Vamos utilizar o ActiveX Data Objects (ADO) no VBA para manipular dados de planilhas e se conectar a bancos de dados como Access e SQLite. O ADO permite estabelecer conexões e interagir com os dados via SQL queries, facilitando consultas e operações.

📌 Passo 1: Habilitar macros no Excel

Antes de começar, é necessário habilitar macros. Veja como fazer isso no link abaixo:

🔗 Habilitar macros no Excel

📌 Passo 2: Referenciar o objeto ADO

  1. Abra o Editor VBA (Alt + F11) e vá até Ferramentas → Referências.
  2. Encontre e marque Microsoft ActiveX Data Objects (última versão).

📌 Passo 3: Implementando o Código

Criando a conexão e extraindo dados

Sub ExtrairDados()
    Dim con As New ADODB.Connection
    Dim rs As New ADODB.Recordset

    ' Abrindo conexão com a própria planilha
    con.Open "Provider=Microsoft.ACE.OLEDB.16.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=\"Excel 12.0 Xml;\""

    ' Executando consulta SQL
    rs.Open "SELECT * FROM [Dados$]", con, adOpenDynamic, adLockReadOnly

    ' Iterando sobre os dados
    Do Until rs.EOF
      ' Existem alguns meios de acessar os dados, sendo eles por índice, 
      ' pelo nome da coluna (rs.Fields("nomeDaColuna")), 
      ' que é o mais recomendado, ou de uma maneira rápida (rs!nomeDaColuna).
      ' No entanto, essa última abordagem não é útil para colunas cujo nome contenha caracteres especiais
        Debug.Print rs.Fields(0), rs.Fields(1), rs.Fields("Nome da Tabela"), rs!NomeDaTabela
        rs.MoveNext
    Loop

    ' Fechando conexão
    rs.Close
    con.Close
    Set rs = Nothing
    Set con = Nothing
    
End Sub

🛠 Estrutura do Código

  • Conexão (con) → Estabelece a comunicação com a planilha.
  • Recordset (rs) → Permite iterar sobre os dados.
  • Consulta SQL (SELECT * FROM [Dados$]) → Retorna todas as linhas da planilha chamada Dados.
  • Loop Do Until rs.EOF → Percorre os registros e exibe os valores no console (Debug.Print).

🔄 Tipos de Cursores (CursorType)

  • adOpenForwardOnly → Apenas leitura, navegação sequencial.
  • adOpenKeyset → Permite navegação e vê alterações feitas por outros usuários.
  • adOpenDynamic → Totalmente dinâmico, todas as mudanças são visíveis.
  • adOpenStatic → Gera uma cópia dos dados sem refletir alterações.

🔒 Tipos de Bloqueio (LockType)

  • adLockReadOnly → Apenas leitura.
  • adLockPessimistic → Bloqueia o registro durante a edição.
  • adLockOptimistic → Permite edições simultâneas e aplica mudanças na atualização.
  • adLockBatchOptimistic → Permite alterações em lote antes de enviá-las.

✅ Conclusão

Com esse método, podemos manipular dados do Excel como um banco de dados, realizando consultas e filtragens eficientes. Além de exibir os dados no console, podemos inseri-los em outras planilhas, exibi-los em UserForms ou estruturá-los para relatórios.

O uso de SQL queries torna a busca dinâmica e otimiza o processamento de informações. Essa técnica pode aumentar significativamente a produtividade ao lidar com planilhas.

🚀 Agora é só testar e explorar as possibilidades!