Inquiridor
UpDate Access com Dados do Excel

Pergunta
-
Boa tarde, Pessoal.
Preciso importar uma tabela do excel e atualizar apenas os campos que foram alterados.
Exemplo:
Tenho essa Tabela no accesstblDados Data Localidade N° da PA Tipo de Solicitação Login Status Patrimônio Principal Status do Equip Principal Software 23/02/2018 Belo Horizonte 965458 Instalação ( UpGrade ) 1111111 Aprovado 2222222 Ativo - Ligado Impressora 23/02/2018 Rio de Janeiro 964841 Instalação (Crescimento) 1111111 Reprovada 2222222 Estoque Disponível Impressora 23/02/2018 Rio de Janeiro 964839 Instalação (Crescimento) 1111111 Aprovado 2222222 Estoque Disponível Impressora 23/02/2018 Rio de Janeiro 964833 Instalação (Crescimento) 1111111 Aprovado 2222222 Ativo - VPN Impressora 23/02/2018 Recife 966037 Instalação (Crescimento) 1111111 Reprovada 2222222 Ativo - Ligado Impressora
Quero importar essa mesma tabela abaixo do excel, porém com alguns campos atualizados.
<tfoot></tfoot> Impressora
Preciso que faça essa atualização na tabela atual do access.
Excel Data Localidade N° da PA Tipo de Solicitação Login Status Patrimônio Principal Status do Equip Principal Software 23/02/2018 Belo Horizonte 965458 Instalação ( UpGrade ) 1111111 Aprovado 2222222 Ativo - Ligado Impressora 23/02/2018 Rio de Janeiro 222222 Instalação (Crescimento) 1111111 Reprovada 2222222 Estoque Disponível Impressora 23/02/2018 Rio de Janeiro 333333 Instalação (Crescimento) 1111111 Aprovado 2222222 Estoque Disponível Impressora
23/02/2018 Rio de Janeiro 444444 Instalação (Crescimento) 1111111 Aprovado 2222222 Ativo - VPN Impressora 23/02/2018 Recife 966037 Instalação (Crescimento) 1111111 Reprovada 2222222 Ativo - Ligado Impressora Campos alterados N° da PA: 222222 , 333333 , 444444
- Editado PauloRSantos sexta-feira, 23 de fevereiro de 2018 19:00
Todas as Respostas
-
Este primeiro exemplo, a macro importa os dados do access e insere no Excel.
No segundo atualiza os dados no access. Veja se consegue adaptar, alterando os valores das variaveis de acordo com o seu cenário.
Marque a referencia: Microsoft activeX data objects x.xx library
Para importar do access:
Dim nConn As New ADODB.Connection
Sub selecionar_access() Dim banco As ADODB.Recordset Dim sql As String 'O COMANDO PARA SELECIONAR DADOS É O SELECT sql = "SELECT * FROM FUNCIONARIOS" 'O ASTERISCO INDICA QUE TODAS AS COLUNAS SERÃO TRAZIDAS Set banco = New ADODB.Recordset Conectar On Error GoTo erro banco.Open sql, nConn Dim xls As Excel.Worksheet Set xls = Sheets("Plan1") 'GRAVA OS DADOS NA PLANILHA PLAN2 NA CÉLULA A2 xls.Range("A2").CopyFromRecordset banco Desconectar Set banco = Nothing Exit Sub erro: MsgBox Err.Description cx.Desconectar Set banco = Nothing End Sub
Public Sub Conectar()
Dim nConectar As String
If Val(Application.Version) < 12 Then
nConectar = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.Path & "\NOME_DO_SEU_BANCO.accdb"
Else
nConectar = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.Path & "\NOME_DO_SEU_BANCO.mdb"
End If
nConn.ConnectionString = nConectar
nConn.Open
End SubPublic Sub Desconectar()
nConn.Close
End SubPara atualizar os dados no access:
Sub Alterar_Access() Dim banco As ADODB.Recordset Dim sql As String 'O COMANDO PARA ALTERAR DADOS É O UPDATE sql = "UPDATE FUNCIONARIOS" & _ " SET CARGO = 'GERENTE'" & _ ", SALARIO = '5.456,43'" & _ " WHERE MATRICULA = 1" 'UTILIZEI A CLÁUSULA WHERE NA COLUNA MATRICULA PARA 'ESPECIFICAR QUAL REGISTRO DEVE SER ALTERAR, CASO NÃO FAÇA ISSO, AS COLUNA 'DE TODOS OS REGISTROS SERÃO ALTERADOS. Set banco = New ADODB.Recordset Conectar On Error GoTo erro banco.Open sql, nConn MsgBox "Dados alterados com sucesso" Desconectar Set banco = Nothing Exit Sub erro: MsgBox Err.Description Desconectar Set banco = Nothing End Sub
Click em propor como resposta se foi util a voce. ricardodm@outlook.com.br