Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#23115
Boa tarde!!

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, senha e etc... .
Quando rodo a macro esta retorna um erro de SQL Server inexistente ou acesso negado, conforme imagem no link:

Imagem

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 campos específicos de cada tabela 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
#23138
Reinaldo, bom dia!!

Agradeço a resposta, na verdade todas as informações de endereço de servidor, nome do BD, usuário e senha estão preenchidos na macro que está rodando, só no exemplo que deixei estes campos "vazios".

Agradeço a indicação do site, vou dar uma olhada com mais calma para tentar descobrir qual o meu erro no processo.

Grato
#23262
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
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord