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 é: