PDA

View Full Version : [EXCEL VBA] Estrarre codice sorgente da qualsiasi pagina WEB


UwU
26-12-2016, 00:01
Salve a tutti ragazzi del forum,
vorrei chiedere a qualcuno di voi che sappia usare il VBA (che io ovviamente non so usare) se potrebbe darmi una mano nella scrittura del codice per l'esecuzione di una macro che letto un dato indirizzo e-mail scritto in una cella, mi restituisca tutto il codice sorgente HTML riga per riga, scritto però non in una cella unica, ma andando a capo di cella in cella, perché ho letto da qualche parte che le celle in Excel hanno una lunghezza massima di caratteri che possono contenere e perciò tutto il codice non potrebbe starci e buona parte si perderebbe...

Quello che ha me serve è solo questo, dato che poi tramite la formula CERCA.VERT() mi andrei ad estrapolare di volta in volta dal codice le informazioni di cui avrei bisogno, le quali sono di solito contenute nella riga 210, perciò se il codice fosse anche fatto in modo che estraesse solo quella data riga sarebbe meglio, però mi va bene lo stesso anche tutto :)



P.s. prima che lo chiediate, SI, ho cercato in internet e NO, non ho trovato quello che cercavo... c'erano parecchie soluzioni, ma non sono mai riuscito a trovarne una funzionante per un problema di librerie o altro genere di errore su Excel :(



Vi ringrazio immensamente per l'aiuto qualora vogliate offrirmelo :)

UwU
27-12-2016, 00:04
Allora ragazzi, cercando in rete e facendo vari test, ho trovato un codice che fa al caso mio:
Sub Naviga()
Dim texto As String
Dim objIE As Object
Dim DestUrl As String

DestUrl = "http://www.google.it"

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = False
objIE.Navigate2 DestUrl

Do
DoEvents
Loop Until objIE.readyState = READYSTATE_COMPLETE

Range("A" & 1).Value = objIE.document.body.innerHTML

End Sub
Il problemi però sono:
1) Vorrei che invece di inserire io il link manualmente, se lo andasse a prendere direttamente da dentro una cella
2) Essendo le celle di Excel limitate come caratteri da inserire dentro, tutto il codice non ci sta e quindi la macro dovrebbe fare in modo di andare a capo e scrivere il codice riga per riga

Come posso modificarlo? Grazie :)

UwU
27-12-2016, 12:48
Allora ragazzi, sono molto vicino alla soluzione, ho sistemato il codice, ora è più pulito, leggibile ed ho trovato il modo di fargli leggere una cella in particolare...
Sub EstrSorgPag()
Dim IE As Object

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = False
IE.navigate Range("H1")

Do
DoEvents
Loop Until IE.readyState = READYSTATE_COMPLETE

Range("A" & 1).Value = IE.document.body.innerHTML

End Sub adesso mi manca solo la parte in cui il codice invece di venire copiato in unica cella ("A1"), viene salvato pezzo per pezzo nelle celle sottostanti, dovrei credo fare una sorta di loop ma non so scriverlo chi mi aiuta? :)

UwU
04-01-2017, 17:09
ok sono riuscito a scrivere una macro che sia in grado di estrarre tutti i link da una pagina Web e questo è il risultato :D

Sub EstraiURLdaWeb()

Dim doc As HTMLDocument
Dim output As Object


Set IE = New InternetExplorer
IE.Visible = False
IE.navigate Range("L1")


Do
DoEvents
Loop Until IE.readyState = READYSTATE_COMPLETE


Set doc = IE.document
Set output = doc.getElementsByTagName("a")


i = 5
For Each link In output
Range("A" & i).Value = link
i = i + 1

Next
MsgBox "Fatto!"
End Sub
Il link della pagina deve essere messo in L1 (ma ovviamente potete cambiarlo a vostro piacimento) ed i link estratti partiranno dalla cella A5, ma per cambiare ciò, basta andare nella riga dove sta scritto i = 5 ed inserire il numero della cella che più vi aggrada :)

stefanoste78
18-03-2017, 10:55
POtresti darmi delle dritte per l'uso di macro per estrapolare dati da internet ed intranet?
grazie