Aparecerá a seguinte tela:
Habilite a função "Microsoft Internet Controls" e depois clique em "OK".
Insira um Módulo para facilitar o desenvolvimento:
Com um módulo, suas funções ficam visíveis para todas as planilhas.
Importante: Para a macro funcionar é necessário estar logado no Cartola: Faça o login no Internet Explorer. https://loginfree.globo.com/login/438
Insira a seguinte função no módulo recém criado:
Sub navega_cartola_fc()
Dim navegador As Object
Dim time As String
Set navegador = New InternetExplorer
time = "chupinsco-fc" 'Digite aqui o time
navegador.Navigate "http://cartolafc.globo.com/#!/time/" + time
While navegador.Busy
Wend
Dim r, c As Integer
Dim elemCol as object
Set elemCol= navegador.Document.getElementsByTagName("tbody")
Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 3)
For r = 0 To elemCol(0).Rows.Length - 1
For c = 0 To elemCol(0).Rows(r).Cells.Length - 1
ActiveSheet.Cells(r + 1, c + 1) = _
elemCol(0).Rows(r).Cells(c).innerText
Next c
Next r
Set elemCol = Nothing
Set navegador = Nothing
End Sub
Para executar, basta pressionar F5, depois de clicar em parte interna do código.
Explicando seu funcionamento:
1. Um objeto tipo Internet Explorer é instanciado (navegador = New InternetExplorer)
2. Uma variável string time é criada, no caso o complemento do time Chupinsco FC que é (time = "chupinsco-fc"). Este é o nome do time da forma que aparece no link do Cartola. Essa variável pode ser modificada para qualquer time desejado.
3. O comando "Navegador.Navigate" é utilizado para acessar determinado link através do objeto.
4. A expressão "While navegador.busy : Wend" faz com que a aplicação aguarde até que o Internet Explorer não esteja mais ocupado carregando o link.
5. As variáveis "r" e "c" são instanciadas como inteiros. Elas representam a referência da "Coluna/Col" e "Linha/Row"
6. Um objeto elemCol é instanciado, para representar um elemento adquirido através da função método "getElementsByTagName". Com essa função, é localizado no código fonte da página todos os Elementos existentes com a palavra "tbody". Isso representa que todos os elementos tipo tabela <tbody> são armazenados no objeto "elemCol".
7. Um comando de espera, como o Aplication.wait é inserido a fim de evitar problemas na hora de carregar o objeto elemCol.
8. Dois laços tipo For são encadeados com as varíáveis "r" e "c" para correr entre o total de linhas "elemCol(0).Rows.Length" e pelo total de colunas "elemCol(0).Rows(r).Cells.Lenght".
9. O que retorna o valor de cada conjunto (linha, coluna) da tabela HTML é a função "innerText". No caso o elemCol(0) <- O primeiro elemento representado por zero, que corresponde a tabela do time.
Para representar uma linha e coluna: elemCol(0).Rows(r).Cells(c).innerText.
10. O comando ActiveSheet.Cells(r+1,c+1) representa a posição em que será atribuído o valor correspondente da tabela que está em HTML.
Neste exemplo o resultado no Excel para este fluxo é:
Pedro, ao tentar executar a função descrita acima ocorre o erro "erro em tempo de execução '91' a variavel do objeto ou a variavel with" podes me auxiliar?
ResponderExcluirOlá Ricardo em que linha do código fica amarelo onde acontece o erro?
ExcluirRicardo, tenta assim
ExcluirWhile navegador.Busy
Wend
Para
While navegador.Busy: Wend
Dai vai funcionar numa boa! ^^
o erro persistiu :(
Excluir"Erro de tempo de execução 70"
ExcluirLinha amarela : For r = 0 To elemCol(0).Rows.Length - 1
Este comentário foi removido pelo autor.
ResponderExcluirCara! Meus parabéns! Teria como dar outro exemplo, tipo como listar todos os jogadores de mercado? Desde já muito obrigado!
ResponderExcluirEste comentário foi removido pelo autor.
ResponderExcluirPedro, ao tentar executar a função descrita acima ocorre o erro "erro em tempo de execução '91'
ResponderExcluirlinha que deu erro foi :
For r = 0 To elemCol(0).Rows.Length - 1
pode me ajudar ??
Aconteceu o mesmo erro comigo, alguém tem alguma solução?
Excluiralguem conseguiu sanar o erro acima
ExcluirO meu deu esse erro tambem creio que tem a ver com a versão do microsoft
ResponderExcluirAlguem poderia ajudar?
vcs colocaram o nome do seu time?
ResponderExcluirEu consegui fazer, sem problemas mas o resultado mostrado não é parecido com o que foi mostrado pelo site. Há algo que tenha que mudar?
ResponderExcluirAgradeço desde já a ajuda! Meus parabéns
Vc conseguiu usando como está ai em cima?
Excluir