Moderatori: Anthony47, Flash30005
Set TagColl = IE.document.getElementsByTagName("TD")
For Each SpanT In TagColl
If SpanT.ID = "last_bids_datetime_1" Then ' oppure "last_bids_datetime" & "_1" con ciclo for next
MsgBox SpanT '[object]
MsgBox (SpanT.innerText)
Cells(i + 1, 1) = SpanT.innerText
i = i + 1
End If
If SpanT.ID = "last_bids_username_1" Then
MsgBox SpanT '[object]
MsgBox (SpanT.innerText)
Cells(i + 1, 1) = SpanT.innerText
i = i + 1
End If
If SpanT.ID = "last_bids_amount_1" Then
MsgBox SpanT '[object]
MsgBox (SpanT.innerText)
Cells(i + 1, 1) = SpanT.innerText
i = i + 1
End If
Next SpanT
'cerca ed elenca Le voci
Set myColl = Ie.Document.getElementsByTagName("TD")
For Each myItm In myColl
If myItm.ID = "last_bids_datetime_1" Or myFound Then
Range("H5").Offset(I, J) = myItm.innertext '<<< Tabella messa in H5
myFound = True
J = (J + 1) Mod 4
I = I - 1 * (J = 0)
If I > 5 Then Exit For '<<< Ipotesi di raccogliere 5+1 righe
End If
Next myItm
Stop '
Range("H5").Resize(6,4).Insert Shift:=xlDown
Anthony47 ha scritto:L' istruzione I = I - 1 * (J = 0) AGGIUNGE 1 (ad ogni ciclo di 4 J) perche' Vero in vba corrisponde a "-1"
2) Una volta raccolti tutti i dati relativi a un item, quindi incluso eventuali duplicati, puoi "normalizzare l' elenco" usando il Filtro avanzato, con la scelta Copia univoca dei record; questo eliminera' eventuali doppioni. Puoi registrare una macro mentre fai questo e usarla per queste situazioni.
In quanto a inserire record dummy in presenza di vuoti certamente si puo' fare anche se personalmente ritengo piu' corretto un vuoto che un riempimento a caso che ad esempio ti porteranno a valutare erroneamente la strategia dei singoli utenti. Quindi mi applichero' "se mi avanza del tempo"
Set TagColl = IE.document.getElementsByTagName("TD")
For Each myTag In TagColl
If Left(myTag.ID, 19) = "last_bids_datetime_" Or MyFound Then
Range("H1").Offset(i, J) = myTag.innerText
MyFound = True
J = (J + 1) Mod 4
i = i - 1 * (J = 0)
If i > 9 Then Exit For ' Per uscire dal ciclo dopo aver acquisito i 10 dati
End If
Next myTag
For A = 0 To (Range("J10").Value - Range("C1").Value) * 100 - 1
If Range("C1").Value > 0 Then
Range("A2:D2").Select
Selection.Copy
Range("A1:D1").Select
Selection.Insert Shift:=xlDown
Range("C1").Value = Range("C2").Value + 0.01
Selection.Font.ColorIndex = 3
End If
Next A
For A = 10 To 1 Step -1
If Range("H1").Offset(A - 1, 2).Value <> "" And Range("H1").Offset(A - 1, 2).Value > Range("C1").Value Then
Range("H" & A & ":K" & A).Select 'brutto codice a vedersi
Selection.Copy
Range("A1:D1").Select
Selection.Insert Shift:=xlDown
End If
Next A
tempo = Now + TimeValue("00:00:30")
' Application.OnTime tempo, "CICLO"
'Chiusura IE
IE.Quit
Set IE = Nothing
Puoi usare "Filtra in altra posizione" e poi sostituire la lista filtrata (priva di duplicati) alla lista originale.Ma se uso il filtro avanzato poi i dati rimangono comunque nel foglio e visto che devo successivamente analizzarli risulta scomodo.
Te l' ho gia' detto: se funziona e' bellissimoRisolto così anche se brutto da vedersi
Ora il problema rimane la lista dei link da analizzare che continua a variare.. Hai qualche idea ?
NextName = "Item1234"
On Error Resume Next
wExist = Sheets(NextName).Name
On Error GoTo 0
If wExist = "" Then Worksheets.Add.Name = NextName
Sheets("Home").Select
For A = 1 To Range("B1").End(xlDown).Row
Nomefg = Cells(A, "B").Value
nLink = Cells(A, "A").Value
On Error Resume Next ' Tuo inizio
wExist = Sheets(Nomefg).Name
On Error GoTo 0
If wExist = "" Then Worksheets.Add.Name = Nomefg ' Tuo fine
Worksheets.Add.Name = Nomefg ' Con tuo tolgo questo
ActiveSheet.Name = Nomefg
Range("A1") = Nomefg ' inserisce in cella n. dell'asta
Range("B1") = nLink ' inserisce in cella il link di collegamento
Next A
If wExist = "" Then Worksheets.Add.Name = Nomefg
Sheets("Home").Select
For A = 1 To Range("B1").End(xlDown).Row '<<<esistente
Sheets("Home").Select '<<<<< riga da inserire qui
If wExist = "" Then Worksheets.Add.Name = Nomefg
If wExist = "" Then
Worksheets.Add.Name = Nomefg
'<<<' altre possibili azioni
end if
Nomefg = Sheets("Home").Cells(A, "B").Value
nLink = Sheets("Home").Cells(A, "A").Value
If wExist = "" Then
Worksheets.Add.Name = Nomefg
Range("A1") = Nomefg ' inserisce in cella n. dell'asta
Range("B1") = nLink ' inserisce in cella il link di collegamento
End If
Dim Nomefg As String
For nfg = 1 To Sheets.Count
If Sheets(nfg).Name = "Home" Then Exit For
Sheets(Sheets(nfg).Name).Select
Call A2_Estrai_valori
Next nfg
For A = 1 To Range("B1").End(xlDown).Row
Sheets("Home").Select
Nome = Cells(A, "B").Value
Sheets(Nome).Select
Call A2_Estrai_valori
Next A
If Sheets(nfg).Name = "Home" Or Sheets(nfg).Name = "fogliodopo" Then Exit For
Torna a Applicazioni Office Windows
Inserire dati filtrati da 2 file ad un terzo file Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 14 |
Inserire add.in nella barra di avvio veloce in excel 2003 Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 4 |
Excel: problema con date se devo unirle a testi Autore: valle1975 |
Forum: Applicazioni Office Windows Risposte: 5 |
Visitano il forum: Nessuno e 12 ospiti