Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Importare tabelle da web

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Importare tabelle da web

Postdi aggittoriu » 01/07/20 16:15

Salve a tutti.

Sto rispolverando una vecchia macro che mi avevate dato, per importare tabelle da web a excel. Allegherei un file di esempio, ma non trovo il tasto per caricare il file. :oops:

Comunque, in pratica ho:
in colonna B: nomi di partite (es. Parma - Juventus, ecc)
in colonna C: i vari indirizzi web delle tabelle da importare (es. https://www.betexplorer.com/soccer/ital ... /nPbjV5Df/ ecc.)
in colonna D: il numero progressivo (es. 1 per la prima, 2 per la seconda, ecc)

Quello che cerco di ottenere è il nome della partita in colonna J e a fianco, quindi nella colonna K la tabella con le varie quote.

La macro che uso è questa:
Codice: Seleziona tutto
Sub Imp_Quote_BetExp()
       
        Range("E:Z").Select
    Selection.ClearContents
   
    On Error Resume Next

Dim riga As Range

Ultimo = Range("D" & Rows.Count).End(xlUp).Row
Set riga = Range("D1:D" & Ultimo)
'Set riga = Worksheets("BetExplorer").Range("D1:D" & Ultimo)

For Each Ordine In riga

Cells(Range("K" & Rows.Count).End(xlUp).Row + 1, 10).Value = Range("B" & Ordine)
'Sheets("BetExplorer").Cells(Range("K" & Rows.Count).End(xlUp).Row + 1, 10).Value = Range("B" & Ordine)


myURL = Range("C" & Ordine)
Set IE = CreateObject("InternetExplorer.Application")
   
With IE
    .navigate myURL
    .Visible = True
    Do While .Busy: DoEvents: Loop    'Attesa not busy
    Do While .ReadyState <> 4: DoEvents: Loop 'Attesa documento
End With
'
myStart = Timer  'attesa addizionale
Do
    DoEvents
    If Timer > myStart + 1 Or Timer < myStart Then Exit Do
Loop

Set myColl = IE.document.getElementsByTagName("TABLE")

'Non so se serve
If myColl.Length < 5 Then ' Questo numero non ho la più pallida idea di cosa sia e a che cosa serva
   ' MsgBox ("Numero anomalo di tabelle, abortito")
    GoTo IEQuit
End If

With myColl(0)  ' Questo numero indica la tabella da importare. Dove la tabella numero 1 è indicata dalla 0 e così tutte le altre.
    For Each trtr In .Rows
        For Each tdtd In trtr.Cells
            Cells(Range("Q" & Rows.Count).End(xlUp).Row + 1, j + 11) = tdtd.innertext
            j = j + 1
        Next tdtd
        i = i + 1: j = 0
    Next trtr
i = i + 2
End With
'SendKeys "{F5}", True
 '       SendKeys "{ENTER}", True

IEQuit:
IE.Quit
Set IE = Nothing

newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 2
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime

Next Ordine

End Sub


Ma funziona solo con partite da giocare ancora. Se invece voglio quelle già giocate, la macro non funziona più.

Mi sapete dire come correggerla per farla funzionare anche con quest'ultime?
E come si fa a caricare un file di esempio, così sarebbe tutto più chiaro. :oops:
aggittoriu
Utente Junior
 
Post: 23
Iscritto il: 24/06/14 08:49

Sponsor
 

Re: Importare tabelle da web

Postdi Anthony47 » 01/07/20 16:41

Il codice e la richiesta e' interpretabile solo conoscendo i dati del file cui fa riferimento; per le istrruzioni su come allegarlo: vedi viewtopic.php?f=26&t=103893&p=605487#p605487

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17041
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Importare tabelle da web

Postdi aggittoriu » 01/07/20 17:38

Ok. Grazie. Pensavo si dovesse caricare direttamente qui.

Comunque il file è questo.

Nel foglio Funziona ci sono le partite ancora da giocare. E la macro funziona.
Nel foglio NonFunziona, ci sono partite già giocate. E la macro non funziona.
Ho provato a cambiare anche il numero identificativo della colonna, ma non funziona lo stesso.
aggittoriu
Utente Junior
 
Post: 23
Iscritto il: 24/06/14 08:49

Re: Importare tabelle da web

Postdi Anthony47 » 01/07/20 20:32

La pagina restituisce un numero aleatorio di Tabelle, ma fortunatamente la tabella che ci interessa e' indirizzabile direttamente tramite il suo ID.
Inoltre, dovendosi esaminare molte pagine web, ho modificato la sequenza di CreateObject("InternetExplorer.Application") /IE.Quit per rendere la sequenza piu' lineare e piu' rapida.
Il risultato di questi ragionamenti e' questa macro:
Codice: Seleziona tutto
Sub Imp_Quote_BetExp()
'
Range("E:Z").ClearContents
''    On Error Resume Next
Dim riga As Range
Ultimo = Range("D" & Rows.Count).End(xlUp).Row
Set riga = Range("D1:D" & Ultimo)
'Set riga = Worksheets("BetExplorer").Range("D1:D" & Ultimo)
Set IE = CreateObject("InternetExplorer.Application")
'
For Each Ordine In riga
    Cells(Range("K" & Rows.Count).End(xlUp).Row + 1, 10).Value = Range("B" & Ordine)
    'Sheets("BetExplorer").Cells(Range("K" & Rows.Count).End(xlUp).Row + 1, 10).Value = Range("B" & Ordine)
    myURL = Range("C" & Ordine)
'
    With IE
        .navigate myURL
        .Visible = True
        Do While .Busy: DoEvents: Loop    'Attesa not busy
        Do While .ReadyState <> 4: DoEvents: Loop 'Attesa documento
    End With
    '
    myStart = Timer  'attesa addizionale
    Do
        DoEvents
        If Timer > myStart + 1 Or Timer < myStart Then Exit Do
    Loop
    Set myColl = IE.document.getElementById("sortable-1")   ' Questa e' la tabella da importare
    With myColl
        For Each trtr In .Rows
        yy = yy + 1
            For Each tdtd In trtr.Cells
                Cells(yy, j + 11) = tdtd.innertext
                j = j + 1
            Next tdtd
            i = i + 1: j = 0
        Next trtr
    i = i + 2
    End With
Next Ordine
'
IEQuit:
    IE.Quit
    Set IE = Nothing
End Sub

Prova anche tu...
Avatar utente
Anthony47
Moderatore
 
Post: 17041
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Importare tabelle da web

Postdi aggittoriu » 01/07/20 22:46

Ottimo!

Grazie Anthony47! Questa va che è una meraviglia! :)

Mi hai levato un inutile mal di testa! :)
aggittoriu
Utente Junior
 
Post: 23
Iscritto il: 24/06/14 08:49

Re: Importare tabelle da web

Postdi Flash30005 » 05/07/20 22:02

aggittoriu ha scritto:Ottimo!

Grazie Anthony47! Questa va che è una meraviglia! :)

Mi hai levato un inutile mal di testa! :)


ma Anthony è extraterrestre :lol: :lol: :lol:
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8499
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "Importare tabelle da web":


Chi c’è in linea

Visitano il forum: Francesco53 e 41 ospiti