Recuperare dato da pagina HTML



  • Recuperare dato da pagina HTML
    di Pietro (utente non iscritto) data: 27/06/2016 13:09:56

    Ciao a tutti.
    Vorrei creare una funzione di Excel tramite VBA che vada a recuperare un valore da una pagina html in una tabella e lo restituisca nella cella di Excel.
    Esiste qualcosa di similare da studiare e modificare per fare al caso mio?
    Mi piacerebbe, ma non è essenziale, che potesse girare su excel sia per Windows sia per Mac. E' possibile?
    Grazie a tutti

    Pietro



  • di patel data: 27/06/2016 13:20:58

    la pagina è in rete o hai il file ? se hai il file allegalo e spiega meglio, se è in rete fornisci il link e spiega





  • di Pietro (utente non iscritto) data: 28/06/2016 08:06:25

    Ciao. Ho già provato ieri a rispondere ma non vedo visualizzata la risposta.
    La pagina è una pagina internet con le valorizzazioni di un fondo. La inserisco qui sotto nella sezione codice.
    A me interesserebbe una funzione excel in visual basic che recuperi il valore contenuto nel campo "Valore quota" e lo restituisca alla cella.
    Sarebbe anche interessante, ma magari in un secondo tempo, riuscire a recuperare i valori storici che compongono il grafico sotto, magari in un file csv
    Ciao e grazie
     
    www.fondidoc.it/d/Ana/EEFASFR/LU0497415702



  • di patel data: 28/06/2016 10:19:51

    prova questa macro che imoporta la pagina nel foglio2 e scrive il valore nel foglio1.
    nella seconda riga elimina gli spazi in h t t p
     
    Sub Web_Query()
    myURL = "h t t p://www.fondidoc.it/d/Ana/EEFASFR/LU049741570"
    With Sheets(2).QueryTables.Add(Connection:="URL;" & myURL, Destination:=Sheets(2).Cells(1, 1))
    .BackgroundQuery = True
    .TablesOnlyFromHTML = False 'True
    .Refresh BackgroundQuery:=False
    .SaveData = True
    
    End With
    Sheets(1).Range("A1") = Sheets(2).Range("A38")
    Sheets(1).Range("B1") = Sheets(2).Range("A39")
    Sheets(2).Cells.ClearContents
    End Sub
    






  • di Pietro (utente non iscritto) data: 28/06/2016 14:16:59

    Ciao. Ho provato la tua procedura e direi che funziona alla grande. Grazie.
    L'unica cosa: ho provato a modificarla per renderla una funzione richiamabile più volte all'interno dello stesso foglio e con indirizzi diversi per fondi diversi ma non sono riuscito a farla funzionare. Hai idea del perchè?
    Ciao e grazie ancora

    Pietro

     
    Function Web_Query(ByVal ticker As String) As Double
    Dim myURL As String
    myURL = "h t t p://www.fondidoc.it/d/Ana" & ticker
    
    With Sheets(2).QueryTables.Add(Connection:="URL;" & myURL, Destination:=Sheets(2).Cells(1, 1))
    .BackgroundQuery = True
    .TablesOnlyFromHTML = False 'True
    .Refresh BackgroundQuery:=False
    .SaveData = True
    
    End With
    Web_Query = Sheets(2).Range("A49")
    Sheets(2).Cells.ClearContents
    
    End Function



  • di patel data: 28/06/2016 15:36:26

    come ti ho già detto la macro che importa la pagina nel foglio2, prende i valori di 2 celle e li scrive nel foglio1.
    cambiando sito cambia tutto, non esiste un codice universale per qualsiasi pagina. Quando si riceve un codice occorre analizzarlo e cercare di capire come funziona





  • di Pietro (utente non iscritto) data: 29/06/2016 08:20:54

    Grazie. Ho inserito gli altri indirizzi all'interno della stessa procedura e ho risolto. Grazie