Condividi:        

Riportare su Excel dati sito 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

Re: Riportare su Excel dati sito web

Postdi giovannib87 » 15/01/21 15:50

Grazie Anthony47. Grazie, davvero.

Quando hai due minuti, se puoi, mi dai un'imbeccata su come costruire un foglio copia di "DaWeb" in modo da aggiungere le nuove righe e non sostituirle. Ho provato a cercare ma non ci sono riuscito.
Al momento il mio file è questo https://www.dropbox.com/scl/fi/l167kd4v ... pt2gto65sa
giovannib87
Utente Junior
 
Post: 16
Iscritto il: 12/01/21 02:49

Sponsor
 

Re: Riportare su Excel dati sito web

Postdi Anthony47 » 16/01/21 00:51

Come detto, elaborazioni successive vanno fatte in un foglio separato mentre i match importati ricalcano il contenuto della pagina web esaminata.
Posso pero' aggiungere alle informazioni importate un flag per indicare su ogni riga se quel match e' gia' presente in un foglio di dati storici.
Questa elaborazione possiamo ad esempio farla con questa ulteriore macro:
Codice: Seleziona tutto
Sub ChkNew()
Dim MArr(), OArr(), Confr As String, DaWeb As String
Dim LstR As Long, I As Long, myMatch
'
Confr = "Aggiornamento 15 - 02.30"          '<<< Il foglio coi dati storicizzati
DaWeb = "DaWeb"                             '<<< Il foglio con le nuove importazioni
'
With Sheets(Confr)
    LstR = .Cells(Rows.Count, 1).End(xlUp).Row
    ReDim MArr(0 To LstR * 2)
    For I = 0 To LstR - 1
        MArr(I * 2) = .Cells(I + 1, "B") & "#" & .Cells(I + 1, "C")
        MArr(I * 2 + 1) = .Cells(I + 1, "C") & "#" & .Cells(I + 1, "B")
    Next I
End With
With Sheets(DaWeb)
    For I = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
        myMatch = Application.Match(.Cells(I, "B") & "#" & .Cells(I, "C"), MArr, False)
        If Not IsError(myMatch) Then
            .Cells(I, "H").Value = Int((myMatch + 1) / 2)
        End If
    Next I
End With
End Sub

Questa, lavorando sul tracciato dei dati importati, esamina le nuove importazioni e le confronta col contenuto di un secondo foglio (tipo il tuo Aggiornamento 15 - 02.30); se quel match e' gia' presente allora in colonna H (che finora avevamo lasciato vuota) viene segnato il numero di riga dove si trova nel secondo foglio.

Per eseguire questa nuova macro in coda alla macro che esegue l'importazioni da web bisogna aggiungere una istruzione in coda alla Sub GetSR, la riga marcata <<<:
Codice: Seleziona tutto
Set IE = Nothing
Call ChkNew                             '<<< Marca i match gia' storicizzati
End Sub


Questo flag puo' essere poi usato per le elaborazioni successive (che non ho capito quali sono; forse copia dei match che hanno la colonna H vuota, cosa che puo' essere facilmente ottenuto usando il filtro automatico e una macro autoregistrata).

Ciao

Edit:
Aggiunta nel codice della Sub ChkNew l'istruzione End Sub, omessa nel messaggio originale :-?
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Riportare su Excel dati sito web

Postdi giovannib87 » 16/01/21 04:08

Ho messo la tua macro e il file sembra funzionare alla grande : https://www.dropbox.com/scl/fi/00pde5yx ... ar69fm1hfy
Nella colonna H non mi dà nessun valore ma poco importa.
Ad ogni aggiornamento, nel foglio "AggiornamentoDati" non varia il colore delle righe (rosso o verde che sia) e non si sposta il valore della colonna "Check Finale". Tutto questo è molto importante.
Ti chiedo solo un'ultima cosa per essere sicuro : immaginiamo aggiorno domani il file, 17 Gennaio. Nel foglio "AggiornamentoDati" presumo resteranno le partite del 16 Gennaio. Posso cancellare le righe a mano o rischio di fare danno? Le partite del giorno precedente non mi servono più!
Grazie ancora, grazie tante!
giovannib87
Utente Junior
 
Post: 16
Iscritto il: 12/01/21 02:49

Re: Riportare su Excel dati sito web

Postdi Anthony47 » 16/01/21 10:44

Ho messo la tua macro e il file sembra funzionare alla grande : https://www.dropbox.com/scl/fi/00pde5yx ... ar69fm1hfy
Nella colonna H non mi dà nessun valore ma poco importa.

Per ragioni che posso comunque immaginare, nel mio file e' finita una versione della Sub GetSR diversa da quella che avevo pubblicato nel forum. Questo interrompe con Run time error la macro di importazione.
Come pure nel pubblicare la nuova Sub ChkNew mi sono "mangiato" nel mio messaggio (non nel file pubblicato) la End Sub finale.

Nel collaudo del file mi sono accorto che la fase di compilazione della colonna H come l'avevo realizzata e' abbastanza lenta; l'ho pertanto modificata nella seconda parte, che ora lavora con una matrice. La parte del codice modificata:
Codice: Seleziona tutto
With Sheets(DaWeb)
    ReDim OArr(1 To .Cells(Rows.Count, 1).End(xlUp).Row)        '+++
    For I = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
        myMatch = Application.Match(.Cells(I, "B") & "#" & .Cells(I, "C"), MArr, False)
        If Not IsError(myMatch) Then
            OArr(I - 1) = Int((myMatch + 1) / 2)                '+++
'            .Cells(I, "H").Value = Int((myMatch + 1) / 2)      '---
        End If
    Next I
    .Range("H2").Resize(UBound(OArr), 1).Value = Application.WorksheetFunction.Transpose(OArr)    '+++
End With
End Sub

Le righe eliminate sono marcate ---; quelle aggiunte +++

Ho aggiornato il file, che quindi ora risulta allineato con il codice come l'ho pubblicato nel forum, sia per la Sub GetSR che per la Sub ChkNew.
Ho anche aggiornato il messaggio di ieri sera, correggendo la mancanza di End Sub.
Con queste correzioni il mio file importa i dati da pagina web su foglio DaWeb e aggiunge in colonna H il numero di riga dove, nel foglio storico, un singolo match e' eventualmente presente.

Ad ogni aggiornamento, nel foglio "AggiornamentoDati" non varia il colore delle righe (rosso o verde che sia) e non si sposta il valore della colonna "Check Finale". Tutto questo è molto importante.

Le mie macro non toccano il foglio "AggiornamentoDati", ma aggiornano solo i dati in DaWeb.

Ti chiedo solo un'ultima cosa per essere sicuro : immaginiamo aggiorno domani il file, 17 Gennaio. Nel foglio "AggiornamentoDati" presumo resteranno le partite del 16 Gennaio. Posso cancellare le righe a mano o rischio di fare danno? Le partite del giorno precedente non mi servono più!
Come detto prima, le mie macro non alterano il contenuto di "AggiornamentoDati", ma copiano in DaWeb il contenuto della pagina web facendo "tabula rasa" (limitatamente alle colonne A:H) dei dati precedentemente presenti sul foglio DaWeb.
Quindi puoi cancellare a mano dati sia sul foglio "AggiornamentoDati" che eventualmente sul foglio "DaWeb" e a me non cambia niente.

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

Re: Riportare su Excel dati sito web

Postdi giovannib87 » 16/01/21 17:14

Caro Anthony, purtroppo mi sono perso. E sono ritornato alla versione 1 uno del file (senza la macro Chknew)!
Come detto da te il foglio "AggiornamentoDati" resta invariato (me ne sono accorto oggi aggiornandolo).

Il mio scopo era:
- Foglio "DaWeb" che scarica i dati. (ed è perfetto!)
- Creare un foglio copia di "DaWeb": chiamato, ad esempio, "AggiornamentoDati"
- Lavorare in modo manuale sul foglio "AggiornamentoDati"
- Aggiornare (tramite GetSR) il foglio DaWeb.
- Ogni nuova partita che esce (sul foglio DaWeb) passarla in automatico sul foglio "AggiornamentoDati" con la creazione di una nuova riga senza andare a sovrascrivere e/o modificare le righe esistenti (righe del foglio "AggiornamentoDati".
- Alla mezzanotte, eliminare sul foglio "AggiornamentoDati" le partite del giorno precedente.

Però capisco che ti ho già chiesto tanto.... quindi va bene così. Mi accontento del foglio "DataWeb" ed ad ogni aggiornamento rifaccio le mie modifiche manuali.
GRAZIE GRAZIE GRAZIE :)
giovannib87
Utente Junior
 
Post: 16
Iscritto il: 12/01/21 02:49

Re: Riportare su Excel dati sito web

Postdi Anthony47 » 16/01/21 17:37

Prego...

Non mi sono mai proposto per elaborare i dati una volta estratti, ma solo per estrarre i dati e presentarli sul foglio excel; anche perche' non conosco l'argomento e farei proprio fatica a capire le elaborazioni da fare.

Quindi... anche io mi accontento di quanto fatto :D :D :D

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

Re: Riportare su Excel dati sito web

Postdi giovannib87 » 16/01/21 17:45

Mi dispiace che alla fine non ci siamo capiti :)
Non si trattava di elaborarli una volta estratti, avevo provveduto manualmente all'elaborazione.

Ti chiedevo una dritta su come fare un foglio copia di DaWeb ed importare dentro solo i nuovi dati estratti senza sovrascrivere tutto.

Ma... GRAZIE :)
giovannib87
Utente Junior
 
Post: 16
Iscritto il: 12/01/21 02:49

Re: Riportare su Excel dati sito web

Postdi Anthony47 » 18/01/21 00:38

Allora vediamo se siamo compatibili...

La V2 del file e' scaricabile qui: https://www.dropbox.com/s/evw8e71443gl3 ... .xlsm?dl=0

La Sub GetSR
-importa sul foglio DaWeb (impostabile) i risultati presenti su pagina web (come nella prima versione)
-Opzionalmente puo' copiare eventuali formule posizionate in col I a successive (vedi riga GoTo eCopyF)
-In coda richiama una nuova versione della Sub ChkNew:
--La Sub ChkNew confronta i Match importati con quelli presenti sul foglio AggiornamentoDati
- - Se match gia' presente, scive in colonna H di DaWeb la riga in cui e' presente
- - Se match e' assente, copia il record in coda al contenuto di AggiornamentoDati e poi copia le colonne I:K dalla penultima alla ultima riga (formule presenti nel foglio AggiornamentoDati)

Se e' quello che serviva, eccolo; se intendevi una cosa diversa, allora fooorse...

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

Re: Riportare su Excel dati sito web

Postdi giovannib87 » 18/01/21 22:12

Grazie
giovannib87
Utente Junior
 
Post: 16
Iscritto il: 12/01/21 02:49

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Riportare su Excel dati sito web":


Chi c’è in linea

Visitano il forum: Nessuno e 55 ospiti

cron