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:
📌 Passo 2: Referenciar o objeto ADO
- Abra o Editor VBA (
Alt + F11
) e vá até Ferramentas → Referências. - 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 chamadaDados
. - 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!