Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] Importazione pagina web completa (di link)

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

[Excel] Importazione pagina web completa (di link)

Postdi aggittoriu » 21/07/18 10:05

Ciao a tutti,

sto cercando di importarmi alcune pagine web in excel, ma non riesco a importarle completamente.

Se io uso una macro tipo questa:
Codice: Seleziona tutto
Sub Formato_incluso()

URL = Range("Z1").Value

 With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;" & URL, _
        Destination:=Range("$AA$3"))
        .Name = "oggi"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlAllTables
        .WebFormatting = xlWebFormattingAll
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = True
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With

End Sub


Dove in Z1 ho ad esempio
Codice: Seleziona tutto
http://www.betexplorer.com/soccer/south-korea/k-league-1/gyeongnam-suwon-bluewings/xK2ZljpP/

Mi importa i link in details delle partite Head-to-head, ma non mi importa i link in details delle partite Last results. E a me interessano proprio quelli.

Come devo variare la mia macro per averli? :?:
aggittoriu
Utente Junior
 
Post: 20
Iscritto il: 24/06/14 08:49

Sponsor
 

Re: [Excel] Importazione pagina web completa (di link)

Postdi Anthony47 » 21/07/18 13:58

Mi importa i link in details delle partite Head-to-head, ma non mi importa i link in details delle partite Last results
Se cerco "Last results" sulla pagina non mi trova nulla; mi spieghi per favore cosa vorresti importare, da capire (per cominciare) se puo' essere risolto tramite WebQuery?

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

Re: [Excel] Importazione pagina web completa (di link)

Postdi aggittoriu » 21/07/18 15:13

Ciao Anthony,

ormai quella partita è già stata giocata e la pagina è cambiata. Quindi se non l'hai vista prima, ora non posso più fartela vedere.

In pratica, a volte succede che una scritta con un link, mi viene importata su un foglio excel, ma senza link. E io il link lo voglio.

Però ormai, bisogna aspettare che mi ricapiti un caso simile. E che tu faccia in tempo a vederlo, prima che cambi la pagina. :D
aggittoriu
Utente Junior
 
Post: 20
Iscritto il: 24/06/14 08:49

Re: [Excel] Importazione pagina web completa (di link)

Postdi aggittoriu » 04/08/18 13:45

Rieccomi qui.

Se metto in Z1 questo link
Codice: Seleziona tutto
http://www.betexplorer.com/next/soccer/

Mi viene importata la pagina web, con i link delle singole partite, ma senza i link dei vari campionati.

Perchè?
Se io volessi anche quei link?
aggittoriu
Utente Junior
 
Post: 20
Iscritto il: 24/06/14 08:49

Re: [Excel] Importazione pagina web completa (di link)

Postdi Anthony47 » 05/08/18 11:46

Non so a te, ma a me i dati importati sono diversi da quanto visualizzato sulla pagina web

Questo e' quello che vedo:
Immagine

Questo e' quello che importo:
Immaginepicture upload

Questo a conferma che le webquery non sono in grado di gestire appropriatamente pagine generate dinamicamente, tramite script.

Riciclando una delle tante macro per importare da web ti propongo questo codice:
Codice: Seleziona tutto
Sub Call1()
    Sheets("Foglio3").Select            '<<< Il foglio su cui si fara' l'importazione
    Range("A:X").ClearContents          'NB: Il fofglio SARA' AZZERATO senza preavviso
    Range("A:X").NumberFormat = "@"     'Colonne in formato Testo
    Call GetTabbbSub(Range("Z1").Value) '  "Chiama" la GetTabbbSub
    Range("A:X").WrapText = False
End Sub

Sub GetTabbbSub(ByVal myURL As String)
'Va Chiamata passandogli l'URL da leggere
Set IE = CreateObject("InternetExplorer.Application")
'
With IE
    .navigate myURL
    .Visible = True
'Stop                                  'Vedi TESTO
    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
'Scrive le tabelle SUL FOGLIO ATTIVO
Set myColl = IE.document.getElementsByTagName("TABLE")
For Each myItm In myColl
    Cells(I + 1, 1) = "Table# " & ti + 1
    ti = ti + 1: I = I + 1
    For Each trtr In myItm.Rows
        For Each tDtD In trtr.Cells
            Cells(I + 1, j + 1) = tDtD.innerText
            Cells(I + 1, j + 1).HorizontalAlignment = xlLeft
            'Legge hyperlink:
                If InStr(1, tDtD.innerHTML, "href", vbTextCompare) > 0 Then
                DoEvents: DoEvents
                    ActiveSheet.Hyperlinks.Add anchor:=Cells(I + 1, j + 1), _
                       Address:=tDtD.getElementsByTagName("a")(0).href
                End If
            If j > 0 And Len(Cells(I + 1, j + 1)) > 2 Then cz = 1
            j = j + 1
        Next tDtD
        'Allinea al centro se e' una Intestazione:
        If trtr.classname = "js-tournament" Then
            Cells(I + 1, 1).HorizontalAlignment = xlCenter
        End If
        I = I + 1: j = 0
DoEvents
    Next trtr
I = I + 1
Next myItm
'
'Chiusura IE
IE.Quit
Set IE = Nothing
End Sub

Va messo in un "Modulo standard" del vba. Poi all'occorrenza devi avviare la Sub Call1, che richiama la Sub GetTabbbSub(ByVal myURL As String).

Questo ti importera' sul foglio selezionato (nel nostro caso " Foglio3", come impostato a inizio di Sub Call1) tutte le tabella presenti sull'url indicato (quello contenuto in Z1 di Foglio3, come indicato al momento della Call GetTabbbSub), da Riga 1 verso il basso

Le celle che hanno un hyperlink lo avranno anche sul foglio Excel

Noterai, in testa alla Sub GetTabbbSub, uno "Stop" al momento "commentato" (e quindi non attivo): se ti interessa interagire con la pagina web prima dell'importazione tabella allora togli l'Apostrofo in prima colonna. In questo modo la macro si fermera' all'apertura della pagina; puoi ora cambiare le scelte (es la data); poi torna sul vba (dove trovi la macro ferma sullo Stop) e premi F5 per completare l'importazione.

Il tutto e' basato sul codice html rilevato "oggi" nella pagina http://www.betexplorer.com/next/soccer; non si puo' escludere che "domani" il codice cambi rendendo errate le importazioni.

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

Re: [Excel] Importazione pagina web completa (di link)

Postdi aggittoriu » 05/08/18 15:49

Ciao Antony.

Innanzitutto Grazie! Ma... Aiuto! Quella macro che mi hai dato la conoscevo già, perchè me l'avevi suggerita tu o un'altro utente di questo forum, poco tempo fa.
Va bene usarla per importare pochi dati su molte pagine web. Ma in questo caso, non fa di certo. Io non so se sia colpa del mio pc, ma con me è di una lentezza snervante. E per di più, spesso non funziona e bisogna ricominciare tutto da capo. Facendo un copia e incolla manuale, ci impiegherei un infinitesimo di tempo.

Ma non esiste una qualche istruzione, per fare importare tutti i vari link, usando una semplicissima macro come quella postata da me all'inizio?
Io capisco che molti contenuti non li importi. Ma almeno quelli che riesce ad importare, li vorrei completi di link.
aggittoriu
Utente Junior
 
Post: 20
Iscritto il: 24/06/14 08:49

Re: [Excel] Importazione pagina web completa (di link)

Postdi Anthony47 » 06/08/18 14:25

Nelle mie prove la macro si completa nel giro di una decina di secondi.
Comunque, come detto, le webquery (che e' il metodo usato dalla tua macro) non sono idonee a importare i dati da pagine dinamiche; lo dice la stessa Microsoft ed e' quindi gia' un miracolo che ti importa molto di quel che ti serve.

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

Re: [Excel] Importazione pagina web completa (di link)

Postdi aggittoriu » 06/08/18 21:43

Una decina di secondi? :eeh: Io dopo mezz'ora ho interrotto (ed ero forse a metà dell'opera), perchè tanto non aveva senso aspettare tutto quel tempo.

Allora, forse ho qualcosa io nel mio pc, che mi fa andare a rilento excel. Non è che sai darmi qualche consiglio anche a questo riguardo? Che ne so... qualche impostazione da correggere, o... qualcos'altro.
aggittoriu
Utente Junior
 
Post: 20
Iscritto il: 24/06/14 08:49

Re: [Excel] Importazione pagina web completa (di link)

Postdi Anthony47 » 07/08/18 02:11

Ho notato stasera che, mentre usavo una connessione 2G, talvolta la macro rimaneva in IE.readyState = 3; secondo la documentazione
Object is interactive, but not all of its data is available.
Teoricamente quindi la pagina non e' pronta; comunque piuttosto che rimanere impiccati per minuti in quella posizione ho inserito un timeout di 20 secondi sull'attesa.
Per questo devi sostituire la riga Do While .readyState <> 4: DoEvents: Loop 'Attesa documento con
Codice: Seleziona tutto
myStart = Timer
    Do While (.readystate <> 4 And Timer < myStart + 20): DoEvents: Loop 'Attesa documento

Se anche con questa modifica l'importazione avviene lentamente allora prova a inserire la macro in un file nuovo, vuoto.

Con una connessione 4G la pagina si completava nel giro di pochi secondi.

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

Re: [Excel] Importazione pagina web completa (di link)

Postdi aggittoriu » 07/08/18 10:39

Ho provato, ma più o meno è la stessa cosa.

Non ho una connessione 4G, ma a prescindere da quello, non so perchè, ma capita spesso che excel mi vada a rilento. Si blocca per 2 o 3 secondi, poi si sblocca. Poi come muovo il cursore si riblocca per 2 o 3 secondi e così via.
Inoltre, spesso il cursore lampeggia velocemente, come quando si registra qualcosa. Avrà qualcosa che non va. :(

Ora però sta funzionando bene, ma la macro è lentissima. Ma se il problema è che non ho la connessione 4G, non ci posso fare niente.

Vabbè... mi tocca rassegnarmi ad andare di copia e incolla manuale.

Grazie comunque dell'aiuto! :)
E alla prossima! :D
aggittoriu
Utente Junior
 
Post: 20
Iscritto il: 24/06/14 08:49

Re: [Excel] Importazione pagina web completa (di link)

Postdi Anthony47 » 08/08/18 01:46

Per "2G" intendo una connessione a circa 200 kbsec, una connessione moolto lenta; per 4G intendo una connessione mobile in linea con gli standard odierni, ma io quella macro la uso regolarmete da casa con collegamenti adsl standard, 10 mbps.
Dopo che la macro comincia a scrivere i suoi dati sul foglio, in genere completa la scrittura in un paio di secondi.

Se il tuo file invece e' molto piu' lento allora devi provare su un file nuovo, per essere certo che non ci siano altre situazioni che rallentano.
Se il cursore lampeggia velocemente in genere e' dovuto a macro in esecuzione.

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

Re: [Excel] Importazione pagina web completa (di link)

Postdi aggittoriu » 08/08/18 07:48

Ho appena fatto il test con speedtest.net. I risultati sono:
Ping ms: 32
Download mbps: 4,62
upload mbps: 0,3

Io non ci capisco niente. Ma a occhio e croce, non deve essere proprio una scheggia.

La prova sul file nuovo di zecca l'ho fatta. Ma non cambia niente.
E per il cursore che lampeggia... no... non ho nessuna macro in esecuzione. Non so da cosa dipenda. Boh!
aggittoriu
Utente Junior
 
Post: 20
Iscritto il: 24/06/14 08:49

Re: [Excel] Importazione pagina web completa (di link)

Postdi Anthony47 » 08/08/18 23:34

La velocita' della tua conessione mi sembra decorosa.
Non sono in grado di immaginare i motivi di rallentamento sul tuo pc, ne' suggerire altre prove da fare.
Sorry...
Avatar utente
Anthony47
Moderatore
 
Post: 16938
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Importazione pagina web completa (di link)

Postdi aggittoriu » 09/08/18 07:26

Ok. Grazie comunque!

Ho visto che anche altre macro che non necessitano di connessione, sono lentissime. Evvidentemente c'è qualcosa che non va nel mio pc. Vai a capirlo però! :(

Alla prossima! ;)
aggittoriu
Utente Junior
 
Post: 20
Iscritto il: 24/06/14 08:49


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Importazione pagina web completa (di link)":


Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti