Manipular dados de uma planilha Excel usando o Recordset
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Podemos usar o Recordset para manipular os dados de uma planilha. Veja esta imagem:
Vamos acrescentar à lista mais um produto. Acompanhe os comentários do código proposto:
Faça o login aqui para ter acesso ao código.
Observe o produto inserido à lista, após a execução do código:
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!
Os dez artigos mais visitados
MontaRibbons v.7.0 - Assistente completo para criar ribbons no Access
Vídeo - Controle personalizado de Acesso de Usuários
Vídeo - Aprenda sobre filtragens
Vídeo - Segurança máxima, usando o OPEN
Uma ajuda para quem está começando um negócio ou um projeto
Integrando o Access com Servidor MySQL - Introdução
Desabilitando a faixa(ribbon) superior do Access
Vídeo - Programação de relatórios - Parte 1
Como carregar o seu menu sem que ele vá para lista de suplementos
Vídeo - Criando Ribbons parte 1 - Conhecendo a estrutura Xml
5 comentário(s) Fabio Matos 05/04/2023 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 ... Avelino Sampaio 05/04/2023 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/2023 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 28/03/2023 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 27/03/2023 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. |