Notifications
Clear all

navegar e pegar valores Site da Caixa vba

7 Posts
2 Usuários
0 Reactions
2,038 Visualizações
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

Ola.

Estou tentando entender e aprender como funciona isso de aquisição de dados da web,
e para ter algo para fazer estou tentando fazer uma planilha para um amigo que gosta de jogos "apesar de achar que aquilo é manipulado".

Sei que tem os resultados completos

mas para aprendizado gostaria de aprender a navegar na pagina e pegar os valores direto dela
mas não estou conseguindo entender nada :roll:

vi alguns sites,
http://maythesource.com/2012/06/06/read ... -controls/
http://answers.microsoft.com/pt-br/offi ... 492c080f10
http://stackoverflow.com/questions/2020 ... l-table-td
entre outros...

mas não achei exemplos práticos já aplicados na planilha que é como eu consigo entender melhor o funcionamento.

Será que alguem tem uma planilha de exemplo com uma macro desse tipo pra que eu possa analisar e ver se consigo entender algo?

Att.

 
Postado : 08/07/2014 6:58 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

Ola Alexandre, eu usei a pesquisa
mas o unico que achei foi esse
viewtopic.php?f=10&t=2542

e como o site da caixa usa frames "eu acho" nem tudo funciona,
oq eu queria era um exemplo de planilha com navegação e pegando algo,
Qualquer coisa serve
mas se não tiver nada tudo bem,

achei algo em
http://www.tomasvasquez.com.br/forum/vi ... 7yagtxqEZw
mas como o assunto está misturado não sei oq é de que

tem um monte mais que eu olhei, mas não consegui aplicar no site da caixa

http://www.codeforexcelandoutlook.com/e ... -explorer/

Até.

 
Postado : 08/07/2014 7:29 pm
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

a unica coisa que consegui foi escolher o concurso

Sub AcessaPagina()
   Dim iE As InternetExplorer
   Set iE = New InternetExplorer
   iE.Navigate "http://www1.caixa.gov.br/loterias/loterias/megasena/megasena_resultado.asp"
 iE.Visible = True
      Do Until iE.ReadyState = READYSTATE_COMPLETE
    Loop

conc = 10
iE.Navigate "javascript:carrega_concurso(" & conc & ");"

End Sub

mas não consegui nem
selecionar ordem de sorteio ou pegar qualquer valor da pagina...

e o pior que eu esqueci de perguntar para qual loteria ele queria,
"só espero que seja tudo igual"
.

 
Postado : 08/07/2014 9:55 pm
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

Consegui mais alguma coisa

Sub AcessaPagina2()
   Dim iE As InternetExplorer
   Set iE = New InternetExplorer
   loter = "quina"
      
   iE.Navigate "http://www1.caixa.gov.br/loterias/loterias/" & loter & "/" & loter & "_resultado.asp"
 iE.Visible =true ' ----------------------------------------mostra o internet explore
      Do Until iE.ReadyState = READYSTATE_COMPLETE  '---------espera carregar a pagina
    Loop
    
conc = 10 '------ concurso numero
iE.Navigate "javascript:carrega_concurso(" & conc & ");" '------seleciona concurso

Set vln = iE.Document.getElementById("menu_concurso_bt_data") '-------------data
MsgBox vln.getElementsByTagName("b")(0).innerText '----------------------pega a data

Set vln = iE.Document.getElementById("sorteio1") '------------------------ordem sorteio
MsgBox vln.getElementsByTagName("li")(2).innerText '----------valor , lançamento começa em 0

End Sub

Mas estou com problema de tempo de execução e carregamento da pagina, e mesmo colocando loops não resolve.

e em algumas loterias não funcionou um ou outro método

.

 
Postado : 09/07/2014 12:15 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

bem, consegui com

For n = 1 To 10000
Do While iE.Busy
Loop
Next

depois da troca de concurso
----------------------------------------------------------
pelo que percebi para pegar dados da internet não existe regras fixas
oq é valido para uma pagina pode não ser para outra
juntando isso com as diferentes linguagem de programação das paginas, pode ser uma tremenda dor de cabeça.

att.

 
Postado : 09/07/2014 7:30 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

Eu até já consegui pegar os números da loteria que a pessoa quer
mas como só falta o loto fácil acho que vou implementar tbm

Mas as vezes dá uns erros, "nem sempre"

não sei se é erro no script da pagina ou no tempo de resposta
------------------------------------------------------------------------
Do Until iE.ReadyState = READYSTATE_COMPLETE: Loop '-------espera carregar a pagina
For n = 1 To 1000
Do While iE.Busy '--<---loop até a paginar estar pronta "eu acho"
Loop
Next
cn = iE.Document.getElementById("span_conc").innerText <---pega o numero do ultimo sorteio nessa parte que as vezes dá erro
For Ln = cn - 10 To cn <---começo do loop para pegar os 10 últimos resultados "apenas para teste"

tbm não sei se estou fazendo algo de errado na macro ou se tem maneira mais otimizada para esse processo

não sei se alguém do fórum tem conhecimento nessa área

mas se alguém puder me auxiliar agradeço.

Abr.

 
Postado : 10/07/2014 7:39 am