Ir para conteúdo
Fórum Script Brasil
  • 0

Extrair dados do BD SQL com VBA


Jaime Bezerra

Pergunta

Bom dia,

Não sou programador, trabalho em contabilidade e financeiro por isso utilizo muito o excel e como seria de se esperar cheguei ao VBA.

Estou tentando extrair informações específicas do Banco de dados do meu ERP (SQL), pesquisei e copiei uma macro com esta finalidade, fiz as correções mais óbvias para um leigo, BD, Servidor, ID, etc... .
Quando rodo a macro esta retorna um erro de SQL Server inexistente ou acesso negado, conforme print abaixo:

upload_2017-5-10_19-19-55.png 

Utilizo o pacote Office 2007, o ID, senha, Servidor, BD, Tabela, tudo isto está correto pois vez ou outra acabo importando via conexão de Dados externos do próprio excel, poderia até seguir nesta linha, se não fosse a quantidade de tabelas e campos que preciso extrair e mais ainda, o tamanho atual de cada uma das tabelas, por isso preciso trazer apenas alguns campos específicos com filtros.

Agradeço o auxílio, segue abaixo a macro:

Código (Text):
Sub ImportardadosSQL()

' habilite a ref. Microsoft ActiveX Data Objects 2.8 Library

Dim cnn As New ADODB.Connection

Dim rst As New ADODB.Recordset

Dim ConnectionString As String

Dim StrQuery As String, PASS As String, UserName As String, REMOTE_IP_ADDRESS As String, DATABASE As String


' insira os dados (entre aspas), abaixo:

PASS = ""

UserName = ""

REMOTE_IP_ADDRESS = ""

DATABASE = ""

cnn.ConnectionString = "Provider=SQLOLEDB.1;Password=PASS;Persist Security Info=True;User ID=UserName;Data Source=REMOTE_IP_ADDRESS;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=DATABASE"


cnn.Open

cnn.CommandTimeout = 900


StrQuery = "SELECT * FROM transcli " & "WHERE sinal like 'D'"


rst.Open (StrQuery), cnn



'rst.Open StrQuery, cnn


'insere os dados em plan1


Sheets("transcli").Range("A1").CopyFromRecordset rst


End Sub
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Boa tarde!!

 

Após garimpar bastante na internet encontrei a solução para esta questão, estou anexando abaixo a macro que funciona com perfeição:

 

Obs.: Lógicamente o nome de usuário, senha, servidor, e banco deverão ser ajustados para a realidade de cada um.

 

Sub extraidadosSQL()

 

 

' habilite a ref. Microsoft ActiveX Data Objects X.XX Library

 

Dim cnn As ADODB.Connection

 

Dim rst As ADODB.Recordset

 

Dim wrkst As String

 

Dim StrQuery As String

 

 

Set cnn = New ADODB.Connection

 

cnn.ConnectionString = "driver={SQL Server};server=dsrv03;uid=usuário;pwd=senha;database=EverestTeste"

 

 

cnn.CommandTimeout = 30

 

cnn.Open

 

 

Set rst = New ADODB.Recordset

 

 

StrQuery = "SELECT * FROM transcli " & "WHERE sinal like 'D'"

 

 

rst.Open StrQuery, cnn

 

 

Sheets("transcli").Range("A1").CopyFromRecordset rst

 

 

rst.Close

 

 

cnn.Close

 

 

End Sub

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...