Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Importar 2 tabelas de um site pelo IE com vba

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
rafinhaa_trocar
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Ter Set 06, 2016 4:13 pm

Importar 2 tabelas de um site pelo IE com vba

Mensagem por rafinhaa_trocar »

Boa tarde galera,

Preciso baixar 2 tabelas desse site:
http://www.futbol24.com/teamCompare/Bra ... Recife-PE/

mas antes preciso clicar nessas opções e deixar da seguinte maneira:
Imagem

Estou usando esse código para acessar a pagina

Código: Selecionar todos


Sub Teste()
    
    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = True 'We can see IE
    
    Dim link As String
    Dim configJogos As String
    link = "http://www.futbol24.com/teamCompare/Brazil/Corinthians-SP/vs/Brazil/Sport-Recife-PE/"
    'configJogos = "#statTALR-Table=1&statTALR-Limit=1&statTBLR-Table=2&statTBLR-Limit=1"    
    
    On Error Resume Next
    objIE.navigate (link)   

    While objIE.document.ReadyState <> "complete"
    Wend
  
End Sub

Alguém tem alguma dica para configurar as 2 tabelas da forma descrita acima e importar todos os 9 resultados?

Agradeço desde já
Muito Obrigado.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


rafinhaa_trocar
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Ter Set 06, 2016 4:13 pm

Re: Importar 2 tabelas de um site pelo IE com vba

Mensagem por rafinhaa_trocar »

Ninguém tem uma dica ou será que isso não é possível?


Wagner.cwb
Manda bem
Manda bem
Mensagens: 168
Registrado em: Sáb Set 24, 2016 4:48 pm

Re: Importar 2 tabelas de um site pelo IE com vba

Mensagem por Wagner.cwb »

Boa noite colega,

penso que o meu caso poderá te ajudar, veja:

viewtopic.php?f=25&t=4875&p=19933#p19933

Eu não manjo muito, mas creio que você poderá adaptar algo.
Tive ajudo do Mikel e do Everton.

Abraço!


rafinhaa_trocar
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Ter Set 06, 2016 4:13 pm

Re: Importar 2 tabelas de um site pelo IE com vba

Mensagem por rafinhaa_trocar »

Wagner.cwb escreveu:Boa noite colega,

penso que o meu caso poderá te ajudar, veja:

viewtopic.php?f=25&t=4875&p=19933#p19933

Eu não manjo muito, mas creio que você poderá adaptar algo.
Tive ajudo do Mikel e do Everton.

Abraço!
Obrigado, vou dar uma estudada, se alguém tiver mais alguma dica eu aceito.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Wagner.cwb
Manda bem
Manda bem
Mensagens: 168
Registrado em: Sáb Set 24, 2016 4:48 pm

Re: Importar 2 tabelas de um site pelo IE com vba

Mensagem por Wagner.cwb »

Oi Colega!

fiz uma captura de tabelas com a ajudo do amigo Mikel,
veja se te ajuda.

Código: Selecionar todos

Sub capturar_tabela()

 Dim ISNN As String
 Dim I As Integer
 
 I = 1
Do While Range("C" & I).Value <> ""

ISNN = Range("C" & I).Value
 
   With ActiveSheet.QueryTables.Add(Connection:= _
       "URL;http://www.dondelopublico.com/ficha/" & ISNN, Destination:=Range( _
       "D" & I))
       .name = "ISNN"
       .FieldNames = True
       .RowNumbers = False
       .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "1"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
        ActiveCell.Offset(20, 0).Select
   End With
   
I = I + 20
Loop

End Sub
capaz de ajudar, pois o mecanismo principal (entre With ) eu copiei e adaptei da própria gravação de macro do MSe.
Faça o procedimento no excel

Dados - obter dados externos - da web, indique o endereço do site e clique em IR,
depois de carregada a pagina, você irá reparar que aparece algumas setas no lado esquerdo, isso indica as tabelas
que o excel consegue importar, é a etapa que você irá selecionar as duas de seu interesse.

Tente gravar uma macro com os passos acima e depois avalie as variáveis para você criar o seu código.
Capturar Tabelas.rar
(218.37 KiB) Baixado 213 vezes
Dá uma olhada no post viewtopic.php?f=25&t=4900&p=20414#p20414

Qquer coisa, só avisar,

abraço!


rafinhaa_trocar
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Ter Set 06, 2016 4:13 pm

Re: Importar 2 tabelas de um site pelo IE com vba

Mensagem por rafinhaa_trocar »

O principal problema que eu estava enfrentando que é o site carrega a pagina 100% e depois aplicas os parâmetros (http://www.site.com/ + #statTALR-Table=1&statTALR-Limit=1&statTBLR-Table=2&statTBLR-Limit=1)

Adaptei o seu primeiro código e consegui sucesso:

Código: Selecionar todos

Sub TESTE1()

    Dim ie As Object
    Dim iLin As Long
    Dim link, stats As String
    link = "http://www.futbol24.com/teamCompare/Brazil/Internacional-RS/vs/Brazil/Ponte-Preta-SP/"
    stats = "#statTALR-Table=1&statTALR-Limit=1&statTBLR-Table=2&statTBLR-Limit=1"
    
    'instancia de objeto do IE e o torna visível
    Set ie = CreateObject("internetexplorer.application")
    ie.Visible = False
    
    'Inicia o processo de varredura da lista.
    'For iLin = 1 To Plan1.UsedRange.Rows.Count
           
       'Carrega a página de acordo com o link
       ie.navigate link & stats
    
       'Aguarda carregamento da página.
       Do While ie.busy: VBA.DoEvents: Loop
       
       'Captura as duas tabelas de resultados
       Plan1.Cells(1, 1).Value = ie.document.getElementsByTagName("tbody")(5).innertext
       Plan1.Cells(1, 2).Value = ie.document.getElementsByTagName("tbody")(6).innertext
   'Next iLin
    
    'Limpa o objeto ie
    Set ie = Nothing

End Sub
Porem fica tudo junto em uma célula só:
Imagem

Eu teria que pegar cada coluna da tabela online e colocar no excel, mas está me faltando logica de programação para isso.


Wagner.cwb
Manda bem
Manda bem
Mensagens: 168
Registrado em: Sáb Set 24, 2016 4:48 pm

Re: Importar 2 tabelas de um site pelo IE com vba

Mensagem por Wagner.cwb »

Boa noite!

tentei do segundo jeito que te indiquei e creio que o resultado foi melhor.
Eu não sei o layout da sua planilha, então fiz do jeito da planilha anexada.

Tive o mesmo problema que você com relação a forma de captura da tabela, mais reduzido, mas tive.
De repente outra pessoa possa ajudar nisso, mas acredito que você poderá fazer algum ajuste depois de baixá-las.
O problema é que ele considera alguns resultados como "data", então acaba distorcendo os valores.

Enfim, veja se estou no caminho certo.

Código: Selecionar todos

Sub capturar_tabela()
 Dim contador As Integer
 Dim I As Integer

I = 1

Do While Range("B" & I).Value <> ""

With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.futbol24.com/teamCompare/Brazil/" & Range("B" & I) & "/vs/Brazil/" & Range("D" & I) _
        , Destination:=Range("b" & I + 1))
        .Name = "time"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "1"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
        ActiveCell.Offset(10, 0).Select
    End With
  
I = I + 10
Loop
End Sub      
A minha ideia é de você preencher os jogos a cada 10 linhas do anterior.
Você deve ter uma lista das partidas, vc cria uma coluna e distribui 0-10-20-30 etc..
primeiro vamos ver se isso já te ajuda.

Antes
1.PNG
1.PNG (6.62 KiB) Exibido 7415 vezes
Depois
final.PNG
final.PNG (24.11 KiB) Exibido 7415 vezes
Teste_tabelas.rar
(19.89 KiB) Baixado 206 vezes
Abraço!


Wagner.cwb
Manda bem
Manda bem
Mensagens: 168
Registrado em: Sáb Set 24, 2016 4:48 pm

Re: Importar 2 tabelas de um site pelo IE com vba

Mensagem por Wagner.cwb »

Tem como aplicar uma dica do Tomas de outro post.

=TEXTO(E2;"d-d"), vai deixar o placar correto.

abraço!


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Importar 2 tabelas de um site pelo IE com vba

Mensagem por Mikel Silveira Fraga »

Bom dia a todos.

Rafinha, esse código que você montou, onde utiliza a Tag TBody, esta bem próximo do que você precisa. Não cheguei a ver o resultado da planilha do Wagner, mas como são duas tabelas diferentes, pode ser um pouco mais complicado de se adaptar.

Não estou tendo muito tempo ultimamente, mas se puder disponibilizar a planilha com o código acima e demarcar os locais onde quer inserir as informações, posso dar uma olhada.

Aguardo retorno.

Abraços e excelente final de semana a todos.


rafinhaa_trocar
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Ter Set 06, 2016 4:13 pm

Re: Importar 2 tabelas de um site pelo IE com vba

Mensagem por rafinhaa_trocar »

Wagner.cwb escreveu:Boa noite!

tentei do segundo jeito que te indiquei e creio que o resultado foi melhor.
Eu não sei o layout da sua planilha, então fiz do jeito da planilha anexada.

Tive o mesmo problema que você com relação a forma de captura da tabela, mais reduzido, mas tive.
De repente outra pessoa possa ajudar nisso, mas acredito que você poderá fazer algum ajuste depois de baixá-las.
O problema é que ele considera alguns resultados como "data", então acaba distorcendo os valores.

Enfim, veja se estou no caminho certo.

Código: Selecionar todos

Sub capturar_tabela()
 Dim contador As Integer
 Dim I As Integer

I = 1

Do While Range("B" & I).Value <> ""

With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.futbol24.com/teamCompare/Brazil/" & Range("B" & I) & "/vs/Brazil/" & Range("D" & I) _
        , Destination:=Range("b" & I + 1))
        .Name = "time"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "1"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
        ActiveCell.Offset(10, 0).Select
    End With
  
I = I + 10
Loop
End Sub      
A minha ideia é de você preencher os jogos a cada 10 linhas do anterior.
Você deve ter uma lista das partidas, vc cria uma coluna e distribui 0-10-20-30 etc..
primeiro vamos ver se isso já te ajuda.

Antes
1.PNG
Depois
final.PNG
Teste_tabelas.rar
Abraço!
Obrigado mais uma vez pela ajuda Wagner, testei desse modo, mas ele só traz 6 jogos e eu preciso de 9 e alterar as opções da primeira tabela para home e a segunda para away como na imagem abaixo:
Imagem

Não consegui colocar a planilha aqui então enviei para o dropbox:
https://www.dropbox.com/s/j0uvj6fwsy0w6 ... .xlsm?dl=0

Pode colocar uma tabela em baixo da outra mesmo.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder