bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
Manipular dados de uma planilha Excel usando o Recordset

... Assinatura do site por 1 ano + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$100,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Manipular dados de uma planilha Excel usando o Recordset

Antes de iniciar sua leitura, clique aqui e cadastre-se para receber comunicados sobre novos artigos.

Podemos usar o Recordset para manipular os dados de uma planilha.  Veja esta imagem:

Usando Access - Update plainilha Excel

Vamos acrescentar à lista mais um produto.  Acompanhe os comentários do código proposto:

Public Sub fncATualizarPlanilha()
Dim strTabela As String
Dim strSQL As String
Dim bdExcel As DAO.Database
Dim rs As DAO.Recordset
'Passa o local e nome do arquivo para a variável
strArquivo = CurrentProject.Path & "\ListaClientes.xls"
'Abre arquivo ListaClientes.xls
Set bdExcel = OpenDatabase(strArquivo,False,False,"Excel 12.0;HDR=Yes;IMEX=0;")
'Monta a consulta do Recordset
strSQL = "SELECT * FROM [Planilha1$]"
'Abre o Recordset da consulta
Set rs = bdExcel.OpenRecordset(strSQL)
'Adiciona novo produto à lista
rs.AddNew
    rs!id = 6
    rs!Produto = "Tesoura"
    rs![Valor Produto] = "18,70"
rs.Update
'fecha o Recordset
rs.Close
Set rs = Nothing
'Fecha o arquivo Excel
bdExcel.Close
Set bdExcel = Nothing
MsgBox "A planilha foi atualizada...", vbInformation, "Aviso"
End Sub

Observe o produto inserido à lista, após a execução do código:

Usando Access - Uso do Recordset em planilha Excel

 

Desafio:

Crie um planilha Excel com a lista de produtos apresentada aqui e altere o código acima para realizar a transferência dos dados dessa planilha para uma tabela no Access.

Bom estudo!


 

 


5 comentário(s)

Fabio Matos   27/03/2018 22:38:23

Grande mestre Avelino, preciso de uma ajuda absurdamente importante para o meu projeto e eu não consigo fazer de jeito nenhum. Já tentei muito.
Tem como, dentro deste código, copiar todos os registros da tabela Access para o Excel, em vez de apenas 1?
OBS:
Meu Office é o 2016 32bits e meu banco de Dados está com senha.

Avelino Sampaio   28/03/2018 00:31:51

Fábio,

experimente assim:

Public Sub fncATualizarPlanilha()
Dim strTabela As String
Dim strSQL As String
Dim bdExcel As DAO.Database
Dim rs As DAO.Recordset
Dim rsTbl As DAO.Recordset
strArquivo = CurrentProject.Path & "\ListaClientes.xls"
Set bdExcel = OpenDatabase(strArquivo, False, False, "Excel 12.0;HDR=Yes;IMEX=0;")
strSQL = "SELECT * FROM [Planilha1$]"
Set rs = bdExcel.OpenRecordset(strSQL)
Set rsTbl = CurrentDb.OpenRecordset("NomeDaTabela")
Do While Not rsTbl.EOF
rs.AddNew
rs!id = rsTbl!id
rs!produto = rsTbl!produto
rs![Valor Produto] = rsTbl!ValorProduto
rs.Update
Loop
rsTbl.Close
Set rsTbl = Nothing
rs.Close
Set rs = Nothing
bdExcel.Close
Set bdExcel = Nothing
MsgBox "A planilha foi atualizada...", vbInformation, "Aviso"
End Sub

Sucesso!

Fabio Matos   05/04/2018 11:56:02

Professor, o código está copiando sempre o primeiro registro da tabela do Access em um looping infinito.
O que eu faço?
No teste, estou utilizando desta forma:

Dim strTabela As String
Dim strSQL As String
Dim bdExcel As DAO.Database
Dim rs As DAO.Recordset
Dim rsTbl As DAO.Recordset
strArquivo = CurrentProject.Path & "\PlanilhaTeste.xlsm"
Set bdExcel = OpenDatabase(strArquivo, False, False, "Excel 12.0;HDR=Yes;IMEX=0;")
strSQL = "SELECT * FROM [Planilha1$]"
Set rs = bdExcel.OpenRecordset(strSQL)
Set rsTbl = CurrentDb.OpenRecordset("tbl_rot_Vendas")
Do While Not rsTbl.EOF
rs.AddNew
rs!Cod_venda = rsTbl!Cod_venda
rs!Cod_comissionista_G1 = rsTbl!Cod_comissionista_G1
rs!OptionOrcamento_venda = rsTbl!OptionOrcamento_venda
rs!Dt_Hr_venda = rsTbl!Dt_Hr_venda
rs!DtValidadeOrcamento = rsTbl!DtValidadeOrcamento
rs!Cod_cliente = rsTbl!Cod_cliente
rs!Grupo_vendas = rsTbl!Grupo_vendas
rs!AutorizadoPor = rsTbl!AutorizadoPor
rs!VendaFinalizada_vendas = rsTbl!VendaFinalizada_vendas
rs!OperadorCaixa_vendas = rsTbl!OperadorCaixa_vendas
rs!CNPJ_loja = rsTbl!CNPJ_loja
rs!Observacao = rsTbl!Observacao
rs!Cod_formaRetiradaEstoque = rsTbl!Cod_formaRetiradaEstoque
rs!ReferenciaCodVenda = rsTbl!ReferenciaCodVenda
rs!ultimaalteracao = rsTbl!ultimaalteracao
rs!USUARIOLOGADOVENDA = rsTbl!USUARIOLOGADOVENDA
rs!USUARIOLOGADOFECHAMENTO = rsTbl!USUARIOLOGADOFECHAMENTO
rs!Estornovenda = rsTbl!Estornovenda
rs!DtHrEstornoVenda = rsTbl!DtHrEstornoVenda
rs!UsuarioLogadoEstornovenda = rsTbl!UsuarioLogadoEstornovenda
rs.Update
Loop
rsTbl.Close
Set rsTbl = Nothing
rs.Close
Set rs = Nothing
bdExcel.Close
Set bdExcel = Nothing
MsgBox "A planilha foi atualizada...", vbInformation, "Aviso"

Avelino Sampaio   05/04/2018 12:21:32

Fabio,

acrescente o rs.moveNext

...
rs!DtHrEstornoVenda = rsTbl!DtHrEstornoVenda
rs!UsuarioLogadoEstornovenda = rsTbl!UsuarioLogadoEstornovenda
rs.Update
rs.moveNext
Loop
rsTbl.Close
...

Sucesso

Fabio Matos   05/04/2018 13:22:54

Mestre, consegui colocando o rsTbl.moveNext.
Muito obrigado pela ajuda. Tu é o cara.

O que seria da minha empresa sem este site aqui... Valeu mesmo.

...
rs!DtHrEstornoVenda = rsTbl!DtHrEstornoVenda
rs!UsuarioLogadoEstornovenda = rsTbl!UsuarioLogadoEstornovenda
rs.Update
rsTbl.moveNext
Loop
rsTbl.Close
...


Envie seu comentário: