Ir ao conteúdo
  • Cadastre-se
marcelo costa Jr

Excel RESOLVIDO Consultar Acces pelo Excel

Posts recomendados

Boa Tarde,

 

sou novo por aqui, então por favor se já houver algo relacionado me auxilie pois não encontrei exatamente o que preciso.

 

Tenho uma planilha onde eu faço todo o controle dos veículos da empresa, e toda minha base de dados está no Acces. ( para onde quero migrar )

tenho um ProcV em umas das células onde ele consulta uma planilha onde estão esses dados. Pela placa ele me retorna quem é o motorista, e o CPF do mesmo.

Eu preciso saber agora COMO EU FAÇO ESSE PROCV IR BUSCAR LÁ NO ACCES? Para eu poder apagar essa base que está em outra planilha excel.

Compartilhar este post


Link para o post
Compartilhar em outros sites

crie uma aba para consulta onde o excel irá importar a tabela com os dados do access (vá em dados/obter dados no excel) configure a consulta (de preferência mantenha somente os valores excenciais para a sua formula), ajuste a formula e oculte a aba.

Compartilhar este post


Link para o post
Compartilhar em outros sites
28 minutos atrás, Eder Neumann disse:

crie uma aba para consulta onde o excel irá importar a tabela com os dados do access (vá em dados/obter dados no excel) configure a consulta (de preferência mantenha somente os valores excenciais para a sua formula), ajuste a formula e oculte a aba.

vai ser o mesmo procv só que dentro da mesma planilha? Mas e a conexão com o Acces ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@marcelo costa Jr segue exemplo basico de busca de dados dentro de banco de dados access

 

Sub PROCV_IN_TABELA_ACCESS()
Dim sql         As String
Dim db          As Object
Dim rs          As Object
Dim Path        As String
Dim s_Placa     As String

Set db = VBA.CreateObject("ADODB.Connection")
Set rs = VBA.CreateObject("ADODB.Recordset")

Path = ThisWorkbook.Path & "\AQUI NOME DO BANCO DE DADOS ACCESS E A EXTENSAO"
s_Placa = "Aqui_dados_da_Placa" 'ou a celula que contem a placa
  
  db.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Path & ";"
           
      On Error GoTo trat_err
      
       sql = "SELECT * "
       sql = sql & "FROM [NOME_DA_SUA_TABELA] "
       sql = sql & "WHERE [CAMPO_PLACA]='" & s_Placa & "'"
              
       rs.Open sql, db, 3, 3
       
       
    While Not rs.EOF
     
       MsgBox rs![NOME DO CAMPO MOTORISTA] & VBA.vbNewLine & _
              rs![NOME DO CAMPO CPF]
         
         rs.MoveNext
    Wend


trat_err:

 db.Close: Set db = Nothing
  Set rs = Nothing

End Sub

* OBS: Alteracoes que devem ser feitas no codigo de acordo com os seus dados:

  

Path = ThisWorkbook.Path & "\AQUI NOME DO BANCO DE DADOS ACCESS E A EXTENSAO"

     * coloque o endereco do seu banco, nome e extensao

Altere de acordo com os dados da tabela do access: [NOME_DA_SUA_TABELA], [CAMPO_PLACA], [NOME DO CAMPO MOTORISTA], [NOME DO CAMPO CPF]

          

 

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 minutos atrás, Basole disse:

@marcelo costa Jr segue exemplo basico de busca de dados dentro de banco de dados access

 


Sub PROCV_IN_TABELA_ACCESS()
Dim sql         As String
Dim db          As Object
Dim rs          As Object
Dim Path        As String
Dim s_Placa     As String

Set db = VBA.CreateObject("ADODB.Connection")
Set rs = VBA.CreateObject("ADODB.Recordset")

Path = ThisWorkbook.Path & "\AQUI NOME DO BANCO DE DADOS ACCESS E A EXTENSAO"
s_Placa = "Aqui_dados_da_Placa" 'ou a celula que contem a placa
  
  db.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Path & ";"
           
      On Error GoTo trat_err
      
       sql = "SELECT * "
       sql = sql & "FROM [NOME_DA_SUA_TABELA] "
       sql = sql & "WHERE [CAMPO_PLACA]='" & s_Placa & "'"
              
       rs.Open sql, db, 3, 3
       
       
    While Not rs.EOF
     
       MsgBox rs![NOME DO CAMPO MOTORISTA] & VBA.vbNewLine & _
              rs![NOME DO CAMPO CPF]
         
         rs.MoveNext
    Wend


trat_err:

 db.Close: Set db = Nothing
  Set rs = Nothing

End Sub

* OBS: Alteracoes que devem ser feitas no codigo de acordo com os seus dados:

  

Path = ThisWorkbook.Path & "\AQUI NOME DO BANCO DE DADOS ACCESS E A EXTENSAO"

     * coloque o endereco do seu banco, nome e extensao

Altere de acordo com os dados da tabela do access: [NOME_DA_SUA_TABELA], [CAMPO_PLACA], [NOME DO CAMPO MOTORISTA], [NOME DO CAMPO CPF]

          

 

 

[CAMPO_PLACA], [NOME DO CAMPO MOTORISTA], [NOME DO CAMPO CPF] =  coluna  B, C & D. Só coloco B, C, D ?

Capturar.JPG

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 minutos atrás, marcelo costa Jr disse:

vai ser o mesmo procv só que dentro da mesma planilha? Mas e a conexão com o Acces ?

 

33 minutos atrás, Eder Neumann disse:

vá em dados/obter dados

dai selecione dados do access e encontre o arquivo do seu BD

Compartilhar este post


Link para o post
Compartilhar em outros sites

@marcelo costa Jr voce tem que alterar no codigo,  os nomes dos campos, de acordo com os nomes dos campos da tabela do access. 

 

* Se tiver dificuldades, anexe seus arquivos ou exemplos aqui.!

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Basole

7 minutos atrás, Eder Neumann disse:

 

dai selecione dados do access e encontre o arquivo do seu BD

E MINHA FÓRMULA QUE HOJE ESTÁ

 =SEERRO(PROCV(@B$8:B$67;'C:\Users\luizjunior\Desktop\[dados.xlsx]Dados'!$A$2:B$10900;2;FALSO);"-")

 ...

VAI FICAR COMO A CONSULTA ?

 

adicionado 9 minutos depois

@Basole

Capturar2.JPG

Capturar.JPG

Compartilhar este post


Link para o post
Compartilhar em outros sites
18 minutos atrás, marcelo costa Jr disse:

E FÓRMULA QUE HOJE ESTÁ

 =SEERRO(PROCV(@B$8:B$67;'C:\Users\luizjunior\Desktop\[dados.xlsx]Dados'!$A$2:B$10900;2;FALSO);"-")

 VAI FICAR COMO A CONSULTA ?

 

@marcelo costa Jr de acordo com a imagem do seu banco de dados access, fica desta forma a consulta:

 

Sub PROCV_IN_TABELA_ACCESS()
Dim sql         As String
Dim db          As Object
Dim rs          As Object
Dim Path        As String
Dim s_Placa     As String

Set db = VBA.CreateObject("ADODB.Connection")
Set rs = VBA.CreateObject("ADODB.Recordset")

Path = "C:\Users\luizjunior\Documents\BD_placas.accdb"
s_Placa = "DADOS DA PLACA" '* ou a celula que contem a placa
  
  db.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Path & ";"
           
      On Error GoTo trat_err
      
       sql = "SELECT * "
       sql = sql & "FROM [Dados] "
       sql = sql & "WHERE [PLACA]='" & s_Placa & "'"
              
       rs.Open sql, db, 3, 3
       
       
    While Not rs.EOF
     
       MsgBox rs![MOTORISTA] & VBA.vbNewLine & _
              rs![C#P#F# motorista]
         
         rs.MoveNext
    Wend


trat_err:

 db.Close: Set db = Nothing
  Set rs = Nothing

End Sub

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Basole @Basole @Basole Ai na imagem que enviei anteriormente, quando eu digito a placa no campo " CAVALO " aparece o Motorista e o Cpf do mesmo, onde tem a fórmula  =SEERRO(PROCV(@B$8:B$67;'C:\Users\luizjunior\Desktop\[dados.xlsx]Dados'!$A$2:B$10900;2;FALSO);"-")  no campo [ MOTORISTA /  CPF ] como ficaria essa fórmula agora com a consulta no Acces?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

@marcelo costa Jr 

Nao sei o que significa campo CAVALO, pois na imagem nao vi nada relacionado.

 

Eu postei um exemplo simples de consulta ao banco access, mas se pretende adaptar a sua planilha, seu cenário, preciso que disponibilize exemplos dos seus arquivos para tentarmos adaptar a sua situacao, pois o exemplo de codigo generico, nao atende a todas as demandas.

 

De quaquer forma ajustei o codigo a uma funcao (udf)

 

* Para testar cole o codigo abaixo em um modulo  e em qualquer célula coloque, por exemplo =PROCV_ACCESS(A1)

 

Function PROCV_ACCESS(rng As Range) As String
Dim sql         As String
Dim db          As Object
Dim rs          As Object
Dim Path        As String
Dim s_Placa     As String

Set db = VBA.CreateObject("ADODB.Connection")
Set rs = VBA.CreateObject("ADODB.Recordset")

Path = "C:\Users\luizjunior\Documents\BD_placas.accdb"

s_Placa = rng.Value2
  
  db.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Path & ";"
           
      On Error GoTo trat_err
      
       sql = "SELECT * "
       sql = sql & "FROM [Dados] "
       sql = sql & "WHERE [PLACA]='" & s_Placa & "'"
              
       rs.Open sql, db, 3, 3
       
       
    While Not rs.EOF
     
       PROCV_ACCESS = rs![MOTORISTA] & "; " & _
              rs![C#P#F# motorista]
         
         rs.MoveNext
    Wend


trat_err:

 db.Close: Set db = Nothing
  Set rs = Nothing

End Function

 

 

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@marcelo costa Jr voce precisa compartilhar publicamente seus arquivos para qualquer pessoa possa ter acesso

image.png.f3dd477e79a6d61741ae2da03e173188.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

@marcelo costa Jr sua tabela Dados.xlsx esta vinculada ao banco de dados BD_placas.accdb sendo assim nao tenho como acessar os dados.

 

Disponibilize o arquivo Dados.xlsx para eu tentar importar para o access.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 minutos atrás, Basole disse:

@marcelo costa Jr sua tabela Dados.xlsx esta vinculada ao banco de dados BD_placas.accdb sendo assim nao tenho como acessar os dados.

 

Disponibilize o arquivo Dados.xlsx para eu tentar importar para o access.

 

 

o que está no Acces já esta importado .. mas de qualquer forma está feito, já upei!

Compartilhar este post


Link para o post
Compartilhar em outros sites

@marcelo costa Jr apenas vinculado. Segue os arquivos ajustados a funcao 

 

Para retornar o motorista use =PROCV_ACCESS(Celula;FALSO);e para retornar o CPF PROCV_ACCESS(Celula;VERDADEIRO)

image.png.05895d44d88141769aacc6b5bb282eb7.png

 

             image.png.55a2eb167464ee7030fdcebda1dfe8e5.png

Spoiler

Function PROCV_ACCESS(rng As Range, Optional Cpf As Boolean) As String
Dim sql         As String
Dim db          As Object
Dim rs          As Object
Dim Path        As String
Dim s_Placa     As String

Set db = VBA.CreateObject("ADODB.Connection")
Set rs = VBA.CreateObject("ADODB.Recordset")

Path = "C:\Users\luizjunior\Documents\BD_placas.accdb"

s_Placa = rng.Value2
  
  db.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Path & ";"
           
      On Error GoTo trat_err
      
       sql = "SELECT * "
       sql = sql & "FROM [Dados] "
       sql = sql & "WHERE [PLACA]='" & s_Placa & "'"
              
       rs.Open sql, db, 3, 3
       
       
    If Not rs.EOF Then
    
     If Cpf = False Then
       PROCV_ACCESS = rs![MOTORISTA]
     Else
       PROCV_ACCESS = rs![CPF motorista]
     End If
        
    End If


trat_err:

 db.Close: Set db = Nothing
  Set rs = Nothing

End Function

 

Segue os arquivos, e o BD com os dados importados: https://1drv.ms/u/s!AklQQunG_lmmg0sXEdNheA2Ugyjt?e=ncrJl9

 

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
14 horas atrás, Basole disse:

@marcelo costa Jr apenas vinculado. Segue os arquivos ajustados a funcao 

 

Para retornar o motorista use =PROCV_ACCESS(Celula;FALSO);e para retornar o CPF PROCV_ACCESS(Celula;VERDADEIRO)

image.png.05895d44d88141769aacc6b5bb282eb7.png

 

             image.png.55a2eb167464ee7030fdcebda1dfe8e5.png

  Mostrar conteúdo oculto

Function PROCV_ACCESS(rng As Range, Optional Cpf As Boolean) As String
Dim sql         As String
Dim db          As Object
Dim rs          As Object
Dim Path        As String
Dim s_Placa     As String

Set db = VBA.CreateObject("ADODB.Connection")
Set rs = VBA.CreateObject("ADODB.Recordset")

Path = "C:\Users\luizjunior\Documents\BD_placas.accdb"

s_Placa = rng.Value2
  
  db.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Path & ";"
           
      On Error GoTo trat_err
      
       sql = "SELECT * "
       sql = sql & "FROM [Dados] "
       sql = sql & "WHERE [PLACA]='" & s_Placa & "'"
              
       rs.Open sql, db, 3, 3
       
       
    If Not rs.EOF Then
    
     If Cpf = False Then
       PROCV_ACCESS = rs![MOTORISTA]
     Else
       PROCV_ACCESS = rs![CPF motorista]
     End If
        
    End If


trat_err:

 db.Close: Set db = Nothing
  Set rs = Nothing

End Function

 

Segue os arquivos, e o BD com os dados importados: https://1drv.ms/u/s!AklQQunG_lmmg0sXEdNheA2Ugyjt?e=ncrJl9

 

FUNCIONOU! muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Redes de Computadores - Gabriel Torres

PROMOÇÃO DE QUARENTENA

De R$ 39,90 por apenas R$ 9,90 só até as 23h59min desta sexta-feira 03/04/2020

CLIQUE AQUI E COMPRE AGORA MESMO!