Carlindo Posted February 23, 2022 at 06:49 PM Report Share #625471 Posted February 23, 2022 at 06:49 PM Boa tarde, Estou a tentar resolver uma questão e pesso ajuda aos amigos. Gostaria de inserir uma variável dentro de uma pesquisa sql, alguém pode me ajudar? Segue o código Sub Consultar() Dim cn As Object 'Variável de conexão com o Access Dim rs As Object 'Variável de consulta de registro no Access (Record Set) Dim strSql As String 'Variável de código SQL Dim strConnection As String 'Variável de conexão com a aplicação Access Dim sh_capa As Worksheet 'Variável da aba "Capa" Dim i, j As Long Application.DisplayAlerts = False 'Desabilitar os alertas Application.ScreenUpdating = False 'Desabilitar a atualização de tela 'Salvar a planilha ActiveWorkbook.Save 'Configura a variável com a aba "Capa" Set sh_capa = Sheets("Capa") 'Realiza a conexão com a aplicação Access Set cn = CreateObject("ADODB.Connection") 'Código de conexão com o Access desejado strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source = \\CARLOS_GOMES\Users\Public\Excel com BD\Tesouraria IPB\Consultas bd\Aula 4 - Banco de dados.accdb" 'Variável para pesquisa de acordo com ano Dim Ano_Anterior As Double Dim Ano_Atual As Double Ano_Anterior = Plan1.Cells(1, 1).Value Ano_Atual = Plan1.Cells(2, 1).Value 'Código SQL de consulta strSql = "SELECT tbl_vendas.Ano, tbl_vendas.Mês, tbl_vendas.Auxiliar, tbl_vendas.Vendedor, tbl_vendas.[Código 1], tbl_vendas.[Código 2], tbl_vendas.Produto, tbl_vendas.Preço " & _ "FROM tbl_vendas WHERE tbl_vendas.Mês = 12 And tbl_vendas.Ano = Ano_Anterior Or tbl_vendas.Mês = 1 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 2 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 3 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 4 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 5 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 6 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 7 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 8 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 9 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 10 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 11 And tbl_vendas.Ano = Ano_Atual;" 'Abre a conexão com o access desejado cn.Open strConnection 'Executa a consulta no access através do código SQL preenchido na variável strSql Set rs = cn.Execute(strSql) 'Copiar para o Excel as informações resultantes da consulta no Access i = 0 If Not (rs.EOF And rs.BOF) Then 'Verifica se existem alguma informação na consulta 'Conta quantas linhas existem no Banco de Dados j = 0 Do While sh_capa.Cells(5 + j, "B").Value <> "" j = j + 1 Loop 'Apaga o banco de dados no excel sh_capa.Range("B5:I" & j + 6).ClearContents rs.MoveFirst Do Until rs.EOF = True 'Roda linha a linha até chegar no Fim do Arquivo (EOF = End of File) 'Colocar o nome dos campos inseridos na tabela do Access sh_capa.Cells(5 + i, "A").Value = rs("Ano") sh_capa.Cells(5 + i, "B").Value = rs("Mês") sh_capa.Cells(5 + i, "C").Value = rs("Auxiliar") sh_capa.Cells(5 + i, "D").Value = rs("Vendedor") sh_capa.Cells(5 + i, "E").Value = rs("Código 1") sh_capa.Cells(5 + i, "F").Value = rs("Código 2") sh_capa.Cells(5 + i, "G").Value = rs("Produto") sh_capa.Cells(5 + i, "H").Value = rs("Preço") 'Pula de linha no Access rs.MoveNext 'Pula de linha no Excel i = i + 1 Loop 'Avisa ao usuário que as informações foram copiadas 'MsgBox i & " Registros copiados com sucesso!" 'Else 'Avisa ao usuário que nada foi copiado 'MsgBox "Nenhum informação disponível!" End If 'Fecha todas as conexões com o Access Set rs = Nothing cn.Close Set cn = Nothing End Sub Muito grato!!! Link to comment Share on other sites More sharing options...
Luis_vxd Posted June 15, 2022 at 11:30 AM Report Share #626223 Posted June 15, 2022 at 11:30 AM Bom dia. O problema está resolvido? Cumprimentos Luis https://programar-excel.pt Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now