Condividi:        

Riconoscere numeri barrati

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

Riconoscere numeri barrati

Postdi aggittoriu » 11/07/24 09:33

Salve.

Quando faccio copia e incolla delle quote di una pagina tipo questa, su una pagina di exel, capita quasi sempre che sul web compaiano dei numeri barrati. Mentre dopo che li incollo su excel, quei numeri non sono più barrati.

A me interessa sapere qual è la quota più bassa e quella più alta, escludendo però i numeri barrati. Ma non so come riconoscerli per poi escluderli. C'è un modo per poterli riconoscere?
aggittoriu
Utente Senior
 
Post: 161
Iscritto il: 24/06/14 08:49

Sponsor
 

Re: Riconoscere numeri barrati

Postdi Anthony47 » 11/07/24 11:47

Dovresti innanzitutto spiegare come importi quei valori. Quanto al "barrato" questo e' il risutato della formattazione eseguita dal tuo browser esaminando gli elementi di stile dell'oggetto; quindi non c'è "un" metodo, ma esso va cucito sulla pagina da importare
Avatar utente
Anthony47
Moderatore
 
Post: 19326
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Riconoscere numeri barrati

Postdi aggittoriu » 11/07/24 15:39

Ciao. Io in questo caso faccio semplicemente ctrl+a, ctrl+c e poi incolla in excel. Quindi facendo così non si riesce a distinguere i numeri barrati dai numeri normali?
aggittoriu
Utente Senior
 
Post: 161
Iscritto il: 24/06/14 08:49

Re: Riconoscere numeri barrati

Postdi Anthony47 » 12/07/24 12:04

Con quel metodo non hai nessuna chance di intercettare il barrato.
Devi passare a tecniche di "web scraping" usando l'ambiente Selenium (vedi viewtopic.php?f=26&t=112225, e che mi pare abbiamo gia' usato in qualche caso).
Così facendo puoi raccogliere i dati dalle tabelle usando questo codice:
Codice: Seleziona tutto
Sub Leggi()
Dim wPage As Object
'
Set wPage = CreateObject("Selenium.CHRomedriver")
Range("A2").Resize(300, 10).ClearContents
Call GetAllTablesSub(wPage, Range("A1").Value, 3, 1, "2.4")
wPage.Quit
Set wPage = Nothing
End Sub



Sub GetAllTablesSub(LPage As Object, myUrl As String, Optional rNum0 As Long = 1, Optional cNum0 As Long = 1, Optional TNum As String = "0")
Dim TBColl As Object
Dim I As Long, J As Long, myTim As Single
Dim RNum As Long, CNum As Long, TdtD As Object, TrtR As Object
'
LPage.Get myUrl
'
myTim = Timer
Set TBColl = LPage.FindElementsByTag("table")
RNum = rNum0: CNum = cNum0
For I = 1 To TBColl.Count
Dim kkk As Long
kkk = InStr(1, "." & TNum & ".", "." & I & ".", vbTextCompare)
    If kkk > 0 Or TNum = 0 Then
        RNum = RNum + 1
        Cells(RNum, CNum).Value = "## Table " & I
        For Each TrtR In TBColl(I).FindElementsByTag("tr")
            For Each TdtD In TrtR.FindElementsByTag("td")
                Cells(RNum + 1, CNum).Value = (TdtD.Text)
                'kill striked text:
                If InStr(1, TdtD.attribute("class") & "......", "lock", vbTextCompare) > 0 Then
                    Cells(RNum + 1, CNum).ClearContents
                End If
                CNum = CNum + 1
            Next TdtD
            RNum = RNum + 1
            CNum = cNum0
        Next TrtR
        RNum = RNum + 1
        DoEvents
    End If
Next I
'
Debug.Print "FINE", RNum, Format(Timer - myTim, "0.00"), myUrl
End Sub

Il codice comprende la Sub Leggi (primaria) e una Sub GetAllTablesSub da richiamare dalla primaria con i giusti parametri, che sono:
-il driver Selenium da usare (wPage, nel nostro caso)
-l'Url della pagina da leggere (nel mio test l'ho inserito in A1
-il numero di riga da cui cominciare a scrivere i dati
-il numero di colonna da cui cominciare
-il numero di tabella da leggere. Se omesso verranno lette in sequenza tutte le colonne; possono essere indicate piu' colonne, usando una sintassi del tipo "2.4" (importa la 2 e la 4), oppure "1.5.2"

Le celle barrate quindi risulteranno vuote; ovviamente questo vale "oggi" sul sito bmbets.com; "domani" o su altri siti e' tutto imprevedibile

Il codice come pubblicato prevede che l'Url da esaminare sia scritto in A1 del foglio attivo, i dati raccolti vengono posizionati da riga 4 previa pulizia senza preavviso dei dati ivi presenti, vengono importate le tabelle 2 e 4 (la numerazione la stabilisce il sito in modo arbitrario; prima di scegliere 2.4 ho letto tutte le tabelle con l'opzione 0)
Avatar utente
Anthony47
Moderatore
 
Post: 19326
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Riconoscere numeri barrati

Postdi aggittoriu » 12/07/24 14:49

Ah, ok. Io pensavo si potessero riconoscere i barrati anche col copia e incolla. :(

Ehmmm.. Grazie per il codice Anthony47. :oops: Ma purtroppo si. Selenium l'abbiamo già utilizzato con questo sito. E purtroppo sbarella. Sbarella di brutto. Sbarella pure firefox. Figuriamoci Selenium.

Poi già è lentissimo di suo. In più, visto che sbarella, devo prevvedere dei controlli che lo rallentano ancora di più. E devo sperare che quei controlli funzionino effettivamente. Poi a volte neanche mi funziona Selenium. E altre, proprio quando magari mi ha fatto perdere un sacco di tempo e sta per finire, mi esce un messaggio del tipo "memoria esaurita". E si blocca.

All'accopiata Selenium - BMBets gli ho messo una croce sopra.
Ecco perchè faccio copia e incolla! Sorry! Se me lo avessi detto prima che volevi utilizzare Selenium, non ti avrei fatto perdere tempo. :oops:
aggittoriu
Utente Senior
 
Post: 161
Iscritto il: 24/06/14 08:49

Re: Riconoscere numeri barrati

Postdi Anthony47 » 12/07/24 15:28

Tranquillo, non ho scritto il codice della Sub GetAllTablesSub apposta per il tuo quesito...
Avatar utente
Anthony47
Moderatore
 
Post: 19326
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Riconoscere numeri barrati":


Chi c’è in linea

Visitano il forum: Nessuno e 18 ospiti