Página 1 de 1
Limpar cache do script VBA
Enviado: 24 Out 2020 às 20:16
por storyon
Boa noite!
Esse script busca dados de um site que é atualizado de forma dinâmica , mas só consigo os novos dados se fecho e abro o Excel.
Dim html As New HTMLDocument
Set request = CreateObject("MSXML2.XMLHTTP")
request.Open "GET", "
https://speedhive.mylaps.com/LiveTiming ... 1073743227", False
request.send
html.body.innerHTML = request.responseText
Como fazer para limpar o cache que fica armazenado da próxima vez que fazer a consulta, sem a necessidade de fechar o Excel e abrir novamente.
Somente dessa maneira que os dados são renovados.
Re: Limpar cache do script VBA
Enviado: 26 Out 2020 às 23:14
por Strogonoff
você precisa "matar a variável" para executar um novo procedimento..
tente
set request = nothing
Re: Limpar cache do script VBA
Enviado: 28 Out 2020 às 10:16
por storyon
Strogonoff escreveu:você precisa "matar a variável" para executar um novo procedimento..
tente
set request = nothing
Bom dia amigo.
Tentei "matar a variável", tanto o request, quanto o html, mas não deu certo. Ficou assim:
Sub Dados_Web()
Dim html As New HTMLDocument
Set request = CreateObject("MSXML2.XMLHTTP")
request.Open "GET", "
https://speedhive.mylaps.com/LiveTiming ... 1073743574", False
request.send
html.body.innerHTML = request.responseText
lin = 2
For Item = 1 To 6
col = 2
For Each dados In html.getElementsByClassName("row-result result-" & Item & "-row")(0).getElementsByTagName("div")
Cells(lin, col) = dados.innerText
col = col + 1
Next
lin = lin + 1
Next
Set html = Nothing
Set request = Nothing
End Sub
Só atualiza os dados se eu fechar e abrir o Excel.
Re: Limpar cache do script VBA
Enviado: 29 Out 2020 às 17:25
por Strogonoff
Boa tarde!!
Sempre temos um plano B, C,D....
Vamos criar uma rotina para a cada 30' executar sua macro
Sub ProgramarAlarme()
Application.OnTime Now + TimeValue("00:30:00"), " Dados_Web"
msgbox "Timer Ativado"
End Sub
Crie um botão e ative esse comando..
se precisar de um tempo maior é so alterar..
Infelizmente não consigo abrir sua rotina, por isso que estou tentando uma saída, conversei com o pessoal daqui, ninguém sabe precisar algo certo..
Se não der certo, tentamos outro modo..
Re: Limpar cache do script VBA
Enviado: 29 Out 2020 às 17:57
por Raygsson
Esse código é o mesmo que tinha ajustado no outro tópico, porém está tentando acessar outra URL. Essa URL está sendo direcionada pra outro endereço, o que exatamente quer fazer? Tá indo pra essa
https://speedhive.mylaps.com/LiveTiming
Re: Limpar cache do script VBA
Enviado: 30 Out 2020 às 00:20
por Strogonoff
Peço a gentileza de aguardar 1 semana no máximo, verificarei com alguns amigos, para não ficar no campo da achologia...
Missão dada tem que ser missão cumprida...
Re: Limpar cache do script VBA
Enviado: 01 Nov 2020 às 13:03
por storyon
Raygsson escreveu: ↑29 Out 2020 às 17:57
Esse código é o mesmo que tinha ajustado no outro tópico, porém está tentando acessar outra URL. Essa URL está sendo direcionada pra outro endereço, o que exatamente quer fazer? Tá indo pra essa https://speedhive.mylaps.com/LiveTiming
Amigo, sua rotina funcionou perfeitamente, no quesito de buscar os dados em suas div. Porém, ao buscar os dados, neste exato momento, há uma corrida acontecendo conforme imagem em anexo, porém, no excel, ao rodar o script, os dados não são atualizados como deveria, tentando buscar os dados a cada 30 segundos ou 1 minuto.
O link da corrida que está acontecendo neste exato momento é esse:
https://speedhive.mylaps.com/LiveTiming ... 1073747313
A tela da corrida está em anexo.
Re: Limpar cache do script VBA
Enviado: 01 Nov 2020 às 16:54
por Raygsson
Deixar rodando durante um tempo é fácil, no exemplo abaixo defini um período total de 1 minuto e pra atualizar a cada 5 segundos, você pode editar esses períodos.
Não encontrei a divergência entre o que foi capturado e o que esta no site, se tiver algum exemplo posso analisar.
Código: Selecionar todosSub Dados_Web()
Dim html As New HTMLDocument
Set request = CreateObject("MSXML2.XMLHTTP")
Tempo = Now()
TempoFinal = Tempo + TimeValue("00:01:00")
Do While Tempo <= TempoFinal
Range("B2:J7").ClearContents
request.Open "GET", "https://speedhive.mylaps.com/LiveTiming/WSNNEPRE-2147485101/Sessions/WSNNEPRE-1073747313", False
request.send
html.body.innerHTML = request.responseText
lin = 2
For Item = 1 To 6
col = 2
For Each dados In html.getElementsByClassName("row-result result-" & Item & "-row")(0).getElementsByTagName("div")
Cells(lin, col) = dados.innerText
col = col + 1
Next
lin = lin + 1
Next
Application.Wait (Now + TimeValue("00:00:05"))
Tempo = Now()
Loop
Set html = Nothing
Set request = Nothing
MsgBox "Rotina Finalizada.", vbInformation, "Aviso."
End Sub
Re: Limpar cache do script VBA
Enviado: 07 Nov 2020 às 13:28
por Strogonoff
Amigo, Boa tarde!!
Desculpa ter passado a semana que pedi.
Verifique, estudei e outras coisitas más...
Uma coisa que chamou minha atenção desde o começo e de alguns amigos também,
1)você utiliza uma sub e não uma function para o retorno do seu rsultado, quando utilizamos um link externo, por exemplo um QRcode associado numa planilha, usamos uma function para um retorno de resultado mais dinamico.
2)o site que você utiliza oferece essa interface com o Excel, pode acontecer de ter algum delay nas informaçoes na hora de um repasse (já vi casos assim)
3)A sub está vinculada a planilha ? Você vinculou ela direto na planilha de retorno de resultado ou está nos módulos? Tente colocar o codigo na planilha e utilizar alguma funçãode tempo para atualização do resultado, como havia enviado anteriormente.
peço minhas sinceras desculpas estar no campo da achologia e suposição, uma vez que não tenho a planilha e somente algumas informações, mas espero que algumas dessas dicas acima ajudem a você resolver essa questão.
Abraço
Se quiser levantar mais algumas questão estamos a disposição.