Exportar dados do Excel para o Access com VBA (imagens e código)
O que é isso?
This VBA code helps you to upload or export Excel data to Access in one click.
Por que isso acontece?
You can export Excel data to Access without even opening the Access DB.
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]).
Pin
9 respostas
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.