Importar tabela do Access para o Excel com VBA (imagens e código)
O que é isso?Esse código VBA ajuda você a baixar ou importar Acesso Dados de tabela ou consulta para o Excel em um clique.Por que isso acontece?Você pode importar dados da tabela do Access para o Excel sem sequer abrir o banco de dados do Access.Como importar dados da tabela do Access para o Excel
Passo 1: Abra a pasta de trabalho do Excel e vá para o construtor de código VBA (Alt + F11) e abra um novo módulo.Passo 2: Copie e cole o código abaixo nele.
Sub importAccessdata()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sQRY As String
Dim strFilePath As String
strFilePath = "C:\DatabaseFolder\myDB.accdb" 'Substitua 'DatabaseFolder' e 'myDB.accdb' pelo caminho do seu banco de dados e pelo nome do banco de dados
Definir cnn = New ADODB.Connection
Set rs = New ADODB.Recordset
cnn.Open "Provedor=Microsoft.ACE.OLEDB.12.0;" & _
"Fonte de dados=" & strFilePath & ";"
sQRY = "SELECT * FROM tblData" 'Substitua 'tblData' pelo nome da tabela do banco de dados do Access ou pelo nome da consulta da qual você deseja fazer download dos dados
rs.CursorLocation = adUseClient
rs.Open sQRY, cnn, adOpenStatic, adLockReadOnly
Application.ScreenUpdating = False
Sheet1.Range("A1").CopyFromRecordset rs
rs.Close
Set rs = Nothing
cnn.Close
Definir cnn = Nothing
Exit Sub
End Sub
Etapa 3: Clique no botão Executar ou em F5 (você também pode inserir um botão/forma na planilha do Excel, clicar com o botão direito do mouse e atribuir essa macro para ser executada sempre).
Os registros do Access DB foram baixados com sucesso para o Excel. Abra a pasta de trabalho do Excel e verifique os dados.
Observação: Certifique-se de que a "Biblioteca de objetos de dados Microsoft ActiveX" esteja ativada no Ferramentas – Referências (o número usa a versão mais recente [6.1 no momento desta postagem]).
Pino
Tenho certeza de que você trabalha com muitos dados do Excel, MS Access e VBA, então eu Fortemente Recomendo que você participe do curso abaixo, Ultimate Excel VBA Userform with Access Database! É um investimento que vale a pena em você mesmo! FAÇA ISSO AGORA!
Crie seu próprio programa no mundo real, aprenda o verdadeiro Excel VBA (macros), ultrapasse os limites do Excel com um projeto completo
Respostas de 8
Quero exportar os registros do banco de dados do Access para o Excel usando o botão de comando no vb6.0. Envie-me o código completo do vb6.0.
Tenho a planilha 1 em meu Excel, mas recebo o erro de tempo de execução 424 na macro da etapa seguinte.
Sheet1.Range("A1").CopyFromRecordset rs
Olá, gostaria de verificar se, se eu mantiver meu banco de dados do Access em uma unidade compartilhada e distribuir essa macro do Excel em minha organização, ela funcionará? Quero que minha macro do Excel leia alguns valores desse banco de dados do Access e, em seguida, atualize alguma variável ao abrir o Excel.
Além disso, se o Access não funcionar, posso usar outro Excel mantido em uma unidade da organização e acessá-lo em vez do DB. Tentei usar o método de abertura de pasta de trabalho em minha macro para ler meu Excel do onedrive, que é compartilhado com todos em minha empresa, mas não funcionou.
Erro de compilação nas linhas 5, 8, 9...
Finalmente, consegui.
Estou usando 2 variáveis (caixa de texto1 como valor 'currency, formato R$0.000,00' e caixa de texto2 como 'date', formato mm/dd/yyyy)
Código ↓
'================================================ ===|
'========================================== Kauê Vaz==|
'================================================ ===|
Opção explícita
Clique em Ferramentas, Referências e selecione
' Biblioteca de objetos de dados ActiveX 2.0 da Microsoft
Sub getDataFromAccess(strValue, strDate)
Dim DBFullName As String
Dim Connect As String, Source As String
Dim Connection As ADODB.Connection
Dim Conjunto de registros como ADODB.Conjunto de registros
Dim Col As Integer
Dim mySQLVariable As String
Dim mySQLVariable_1 As String
Dim strSQL As String
mySQLVariable = strValue 'Valor da caixa de texto1 (formato de moeda R$0.000,00)
mySQLVariable_1 = strDate 'Valor da caixa de texto2 (formato de data mm/dd/aaaa)
'Código SQL
strSQL = "SELECT * FROM tblDatabase WHERE "
strSQL = strSQL & " [Valor] = '" & (mySQLVariable) & "' e "
strSQL = strSQL & " [Date] = '" & (mySQLVariable_1) & "' "
' Banco de dados, selecione o acesso ao banco de dados
DBFullName = "C:\Users\Desktop\Databases\BD_PaynotProcess\bd_PaynotProcess.accdb"
' Abrir conexão
Definir conexão = nova conexão ADODB.Connection
Conectar = "Provedor=Microsoft.ACE.OLEDB.12.0;"
Connect = Connect & "Fonte de dados=" & DBFullName & ";"
Connection.Open ConnectionString:=Connect
' Criar RecordSet
Definir conjunto de registros = Novo conjunto de registros ADODB.Recordset
Com o conjunto de registros
' Pesquisar valores usando a variável de código SQL strSQL
Fonte = strSQL
Open Source:=Source, ActiveConnection:=Connection
' Importação de colunas do banco de dados.
For Col = 0 To Recordset.Fields.Count - 1
Range("A5").Offset(0, Col).Value = Recordset.Fields(Col).Name
Próximo
' Importando linhas do banco de dados.
Range("A5").Offset(1, 0).CopyFromRecordset Recordset
Terminar com
Set Recordset = Nothing
Conexão.Fechar
Definir conexão =
ActiveSheet.Columns.AutoFit
Finalizar sub
Saudações
Posso importar apenas alguns dados? Filtragem por 2 variáveis?
Exemplo:
X = 13/03
Y = '122315124'
Trazer do banco de dados de acesso apenas as linhas que contêm essas variáveis?
Funcionou para mim. Muito obrigado!
Essa é a melhor consulta que já vi. Você poderia me ajudar a adicionar uma cláusula Where na instrução sql. Tentei modificar sua consulta, mas ela gera um erro.