macro e pagine web



  • macro e pagine web
    di Riccardo (utente non iscritto) data: 25/08/2012 10:41:13

    Ciao, utilizzo excel da diversi anni e le mie macro prevalentemente le ho registrate o le ho scritte con il comando SendKeys.
    Ora ho la necessità di scrivere una macro che partendo da un foglio excel aperto vada su una pagina web apra la finestra HTML (menù di IE Visualizza --> HTML) e savi il file testo in una posizione del disco nota (es. e:documenti).
    Forse vi chiedete a quale scopo tutto ciò, la risposta è abbastanza semplice, la necessità è quella di estrarre dei dati da una pagine web per poi elaborarli successivamente.
    Spero che qualcuno mi possa dare una mano.



  • di Vecchio Frac data: 25/08/2012 11:49:20

    1) Excel versione ...?
    2) Il codice prodotto dal registratore di macro è sempre grezzo, da ottimizzare e a volte non poco
    3) Eviterei SendKeys che magari per versioni di Excel diverse non è portabile (vabbè mi dirai che usi il file sempre solo tu e non lo devi condividere... ma pensiamo global ^_^)
    4) La butto lì... devo ancora guardare: nel menu Dati esiste la possibilità di utilzzare query con fonti dati esterne, anche web (Dati -> Importa dati esterni), magari si ricava qualcosa di utile senza dover necessariamente salvare la pagina
    5) Il link a una risorsa esterna si può attuare con un Hyperlink, vedi l'oggetto nella guida con i suoi metodi e attributi






  • di Vecchio Frac data: 25/08/2012 15:14:47

    Googlando ho trovato questo codice, dovrebbe funzionare.
    Per misura antispam non si può qui scrivere un indirizzo internet, fai tu le prove.
    L'utilizzo è semplice e dovrebbe recuperare l'HTML di un sito:
    var = FirePost (" link ", "")

    Poi salvi "var" in un file di testo:
    Open "e:documenti est.txt" for output as #1
    print #1, var
    close #1
     
    Function FirePost(strPage As String, strPost As String)
    'utilizzo:
    'var = FirePost(" indirizzo da raggiungere ", "")     -- (per misura antispam non posso scrivere un url valido)
        
        Dim req As Object 'New MSXML2.XMLHTTP30
        Set req = CreateObject("MSXML2.ServerXMLHTTP")
        
        req.Open "POST", strPage, False
        req.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        req.Send strPost
        
        FirePost = req.responseText
    
    End Function
    






  • di RICCARDO (utente non iscritto) data: 30/08/2012 09:37:20

    Ho provato il codice inviato da Vecchio Frac e alla fine con un po' di difficoltà sono riuscito a farlo funzionare. Ma il mio problema è che la pagina web dalla quale estrarre il codice html è sotto ambiente protetto e o visto che riesco a superare questa difficoltà aprendo la pagina in questione con il seguente codice. Poi però non so piu' andare avanti ovvero non riesco estrarre il codice html e salvarlo in file txt.
    Grazie in anticipo Vecchio Frac
     
    Sub tt_web()
    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.navigate "indirizzo della pagina"
     
    While ie.busy
    DoEvents
    Wend
    
    End Sub