Select pelo Excel
Enviado: 23 Fev 2018 às 10:23
por brkz
Olá pessoal,
bom dia a todos.
Estou com uma dúvida. Estou montando uma planilha que eu vou inserir alguns CPFs e tenho que consultar no banco de dados SQL Server e o retornar irá popular uma outra aba no Excel. Alguém poderia me indicar como posso fazer essa consulta? Queria separar uma coluna no excel para a pessoa inserir os dados e realizar a consulta.
Re: Select pelo Excel
Enviado: 23 Fev 2018 às 12:42
por Basole
Segue exemplo de consulta ao um sql server
Código: Selecionar todosPublic c As New ADODB.Connection
Sub Selecionar_dados_sql_where()
' PRECISA HABILITAR A REFERENCIA MICROSOFT ACTIVEX DATA OBJECTS x.xx LIBRARY
Dim banco, banco2 As ADODB.Recordset
Dim sql As String 'STRING DE COMANDO
Dim sql2 As String
'O COMANDO PARA SELECIONAR DADOS É O SELECT
sql = "SELECT * from SUPPLIERS" & _
" WHERE SETOR = 'LOGISTICA'" 'A CLÁUSULA WHERE BUSCA APENAS
'TODOS FUNCIONÁRIOS DO SETOR DE LOGISTICA
'SELECIONA O BANCO
sql2 = "USE Northwind"
Set banco = New ADODB.Recordset
Set banco2 = New ADODB.Recordset
'CONEXÃO ABERTA
nConectar
'TRATAMENTO DE ERROS
On Error GoTo erro
'OPERAÇÃO EXECUTADA
banco2.Open sql2, c
banco.Open sql, c
Dim xls As Excel.Worksheet
Set xls = Sheets("plan1")
xls.Range("A1").CopyFromRecordset banco
'DESCONECTAR E LIMPAR MEMORIA
Desconectar
Set banco = Nothing
Set banco2 = Nothing
Exit Sub
'CASO HAJA ERRO
erro:
MsgBox Err.Description
cx.Desconectar
Set banco = Nothing
Set banco2 = Nothing
End Sub
Public Sub nConectar()
Dim s As String
s = "PROVIDER=SQLOLEDB;" 'UTILIZADA QUANDO A AUTENTICAÇÃO É VIA USUÁRIO WINDOWS
s = s & "DATA SOURCE=NOME_DO_PC\SQLEXPRESS;DATABASE=;TRUSTED_CONNECTION=YES"
's = s & " INTEGRATED SECURITY=sspi;"
c.Open s
End Sub
Public Sub Desconectar()
c.Close
End Sub
Re: Select pelo Excel
Enviado: 23 Fev 2018 às 17:03
por brkz
Obrigado amigo! tenho um pouco de dificuldade em conexão pelo VBA. Procurei pela internet e via que se usa ADBO, mas não conseguir entender o conceito para realizar a conexão com meu banco. Poderia ser me passar detalhes por gentileza? Muito obrigado!
Re: Select pelo Excel
Enviado: 23 Fev 2018 às 17:31
por Basole
Sim pode-se usar Ado ou Dao.
Bom no exemplo que postei voce precisa alterar as variaveis de acordo com as suas informações.
Por exemplo:
Na linha " s = s & "DATA SOURCE=NOME_DO_PC\SQLEXPRESS;DATABASE=;TRUSTED_CONNECTION=YES""
Onde esta "NOME_DO_PC", coloca o nome do pc ou endereço (ip, etc), onde esta instalado o serverSql.
Em SqlExpress, o nome do servidor sql, o seu Server Sql.
Nome da tabela "SUPPLIERS" altere para o nome da tabela que deseja consultar.
Campo SETOR = 'LOGISTICA', campo setor e 'logistica' é o filtro, ou seja serão importados todos os dados do setor logistica.
Nesta linha sql2 = "USE Northwind" substitua para o nome do seu banco de dados
Nesta linha Set xls = Sheets("plan1"), altere o nome da planilha (aba).
Nesta linha xls.Range("A1").CopyFromRecordset banco, Range("A1"), a 1ª celula que ser inserido os dados.
Tome cuidado para não remover nenhuma aspas simples, ou só desconsidere se no campo de pesquisa a variável tiver a formatação numérica.