Exportar dados do Excel para o Access com VBA (imagens e código)
O que é isso?
Este código VBA ajuda você a fazer upload ou exportar dados do Excel para o Access em um clique.
Por que isso acontece?
Você pode exportar dados do Excel para o Access sem sequer abrir o banco de dados do Access.
Como exportar dados do Excel para o Access
Passo 1: Abra o Excel e acessar o construtor de código VBA (Alt + F11) e Abrir um novo módulo
.
Passo 2: Copie e cole o código abaixo nele.
Const TARGET_DB = "myDB.accdb" Substitua o 'myDB.accdb' pelo nome do seu banco de dados e certifique-se de que o Excel e o banco de dados do Access estejam no mesmo caminho.
Sub PushTableToAccess()
Dim cnn como ADODB.Connection
Dim MyConn
Dim rst As ADODB.Recordset
Dim i As Long, j As Long
Dim Rw As Long
Sheets("Nome da planilha").Activate Substitua o 'Sheet Name' pelo nome de sua planilha do Excel
Rw = Range("A65536").End(xlUp).Row
Forneça o intervalo de dados de sua planilha do Excel
Definir cnn = New ADODB.Connection
MyConn = ThisWorkbook.Path & Application.PathSeparator & TARGET_DB
Com a cnn
.provedor = "Microsoft.ACE.OLEDB.12.0"
Abrir MyConn
Terminar com
Substitua o 'tblMyExcelUpload' pelo nome de sua tabela no Access
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseServer
rst.Open Source:="tblMyExcelUpload", ActiveConnection:=cnn, _
CursorType:=adOpenDynamic, LockType:=adLockOptimistic, _
Opções:=adCmdTable
'Carregar todos os registros do Excel para o Access.
For i = 2 To Rw
rst.AddNew
Para j = 1 a 7
rst(Cells(1, j).Value) = Cells(i, j).Value
Próximo j
rst.Update
Próximo i
' Fechar a conexão
rst.Close
cnn.Fechar
Set rst = Nothing
Set cnn = Nothing
Finalizar sub
Etapa 3Clique no botão Executar ou em F5 (você também pode inserir um botão/forma na planilha do Excel e, em seguida, clicar com o botão direito do mouse e atribuir essa macro para ser executada sempre). O upload está concluído! Os registros do Excel foram carregados com êxito no Access. Abra a tabela do banco de dados do Access e verifique os dados.
Observação: Certifique-se de que a "Biblioteca de objetos de dados ActiveX da Microsoft" esteja ativada no Ferramentas - Referências (o número usa a versão mais recente [6.1 no momento desta postagem]).
Pino
Respostas de 8
Olá a todos;
Esses dois locais de caminho devem ser os mesmos para que essa ADODBConnection funcione? Esse é o ThisWorkbook.Path e o Target_DB.
Comando de cima:
ThisWorkbook.Path & Application.PathSeparator & TARGET_DB
Ou, o Workbook.Path pode ser, por exemplo
"C:\MyExcelFiles\MyWorkbook.xlsx" e a base de dados do Access TARGET_DB esteja em
"C:\MyDataBases\MyAccessDB.accdb"?
Meu código funciona quando a pasta de trabalho do Excel e o banco de dados do Access estão na mesma pasta, mas quando estão em pastas diferentes (estrutura de biblioteca organizada adequadamente), o código falha no ponto .Open MyConn.
Obrigado a todos,
Mario,
Hi
Como posso definir uma senha para ele?
Tanques
rst(Cells(1, j).Value) = Cells(i, j).Value
o código quebra aqui
----
Erro 3265
O item não pode ser encontrado na coleção correspondente ao nome ou ordinal solicitado
----
Qual seria a aparência do código se eu tivesse a planilha e o banco de dados em locais diferentes, ou seja, em caminhos?
Olá,
meu código é executado até
Sheets("Nome da planilha").Activate
Consegui selecionar a planilha, mas nada mais acontece.
Poderia me orientar?
Obrigado, senhor
Try Worksheets("Yoursheet").Activate
Existe algum comando único para fazer o upload dos dados, como (Range.CopyFromRecordset)?
Oi Krishnan, não tenho certeza, deixe-me explorar e o atualizarei.