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.
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.