Prezados, bom dia.
Hoje é meu primeiro dia no fórum, sou iniciante aqui e também em VBA.
Criei um Dashboard para atualizar dados automaticamente a cada minuto de um CRM corporativo da empresa onde trabalho que é disponibilizado pela web.
Como meu TI não conseguiu me disponibilizar o acesso diretamente pelo banco, eu fiz com que o a rotina se conectasse ao site a cada minuto e baixasse os dados da página que contém o relatório que preciso, usando o :
With ActiveSheet.QueryTables(Connection:= _
"URL;http:
O problema, é que antes de iniciar a rotina, preciso entrar no site uma vez para logar. Quando já estou logado a rotina funciona normalmente, até o momento em que o login expira pelo timeout de um dia.
Ou seja, todo dia preciso iniciar a macro manualmente pois ela sempre trava. Além do time out, problemas de queda da internet também tenho o problema do gerenciador de conexões ficar cheio, com 20.000 conexões o que também o torna lento.
Para Resolver, comecei a implementar um código que parece funcionar, abrindo uma instancia do Internet explorer e passando direto o login e senha pela propria macro. O que eu ainda não consegui é copiar os dados da página inteira diretamente pela a planilha. Só para reforçar, não gostaria de analisar uma tabela específica na página para copiar e sim a página inteira. Segue abaixo o código criado até o momento:
Sub LoginViaBrowser()
Dim Dc_Usuario, Dc_Senha, Dc_URL, Dc_URL2 As String
Dim objIE As New InternetExplorer
'Referencia "Microsoft Internet Controls" Habilitada
'Abre o IE
objIE.Visible = True
'Define os dados de acesso e link das páginas de login e logout
Dc_Usuario = "xxx"
Dc_Senha = "9999"
Dc_URL = "http://xxx"
Dc_URL2 = "http://xxx"
'Navega até o link informado
objIE.Navigate2 Dc_URL
'Espera até que o IE carregue a pagina inicial do CRM por completo
Do Until objIE.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
'Preenche usuário e senha do CRM
objIE.Document.all("user_name").innerText = Dc_Usuario
objIE.Document.all("user_password").innerText = Dc_Senha
'Clica em Entrar
objIE.Document.all("submitButton").Click
'Espera até que o IE carregue a pagina do relatorio do CRM por completo
Do Until objIE.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
'Neste trecho deve entrar o código para copiar toda a página do IE para para a plan1
'Executa o logout - Necessário para que a rotina de login não trave no proximo loop
objIE.Navigate2 Dc_URL2
'Fecha o IE
ie.Quit
End Sub
Estou procurando solução para este ja faz uma semana, até agora não cheguei a uma resposta conclusiva. Desde já agradeço a contribuição de todos.
Att,
Luiscrj
Novo Membro
Registrado
3 Mensagens
0 Curtidas