Ripeto che se si vuole automatizzare l' accesso a pagine web la chiave e' la lettura e la decodifica del codice sorgente delle pagine.
Nel caso specifico, nell' ipotesi di voler scaricare il pdf Presentazione del corso 2012 2013, ti troveresti a ragionare su questo codice sorgente:
- Codice: Seleziona tutto
<li><a href="javascript:aprifinestra('/web/scaricatore.asp?c=5eqdfwg3es5w1ab82qrhibe5b&par=1','300','250')"> <img src="/img/pdf_med.gif" title="" border="0" ></a><strong>Presentazione del corso 2012 2013</strong><br />Blocco slide 0</li>
Da esso
Da esso si deduce che viena caricata in una nuova finestra la pagina /web/scaricatore.asp?c=5eqdfwg3es5w1ab82qrhibe5b.
E' quindi sufficiente, nella macro che ti avevo gia' portato ad esempio, usare
- Codice: Seleziona tutto
URL = http://www.didattica.unitus.it/web/scaricatore.asp?c=5eqdfwg3es5w1ab82qrhibe5b
per avviare da vba l' operazione analoga.
C' e' anche un problema di "nome file": nell' esempio il nome file era l' utima parte dell' Url, in questo caso potresti usare il codice interno del documento (5eqdfwg3es5w1ab82qrhibe5b), per cui modificherai anche l' istruzione che compila mySplit e quella che compila PathNName; insomma vanno modificate in blocco queste tre istruzioni:
- Codice: Seleziona tutto
URL = "http://www.didattica.unitus.it/web/scaricatore.asp?c=5eqdfwg3es5w1ab82qrhibe5b"
mySplit = Split(URL, "=")
PathNName = ThisWorkbook.Path & "\" & mySplit(UBound(mySplit)) & ".pdf"
Volendo puoi inizialmente crearti un elenco di file disponibili, ad esempio con questa macro crei questo elenco in colonna G:I di Foglio5:
- Codice: Seleziona tutto
Sub ListaDownl()
'wip per calculon
'vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=95343
Dim myColl As Object
myURL = "http://www.didattica.unitus.it/web/didattica.asp?azione=schedaMat&idMat=1830" '
'
Set IE = CreateObject("InternetExplorer.Application")
'
Sheets("Foglio5").Select
Range("G:I").Clear
'
With IE
.navigate myURL
.Visible = True
Do While .Busy: DoEvents: Loop 'Attesa not busy
Do While .readyState <> 4: DoEvents: Loop 'Attesa documento
End With
'
myStart = Timer
Do
DoEvents
If Timer > myStart + 2 Or Timer < myStart Then Exit Do
Loop
'
'cerca ed elenca in G:I i Documenti disponibili
Set myColl = IE.document.getElementById("listaFileAllegatiMat")
Set my2Coll = myColl.getElementsByTagName("a")
Set my3Coll = myColl.getElementsByTagName("li")
For KK = 0 To my2Coll.Length - 1
mySplit = Split(my2Coll(KK).href, "=")
If UBound(mySplit, 1) > 0 Then
Cells(KK + 1, 7) = Replace(mySplit(1), "&par", "")
mySplit = Split(Replace(my3Coll(KK).innerText, Chr(13), ""), Chr(10))
Cells(KK + 1, 8).Resize(1, 2) = mySplit
End If
Next KK
'Chiusura IE
IE.Quit
Set IE = Nothing
End Sub
In questo modo puoi usare la tabella di col G per compilare URL della macro GetWebFile, che quindi potrebbe essere organizzata in un loop per estrarre e salvare tutti i documenti.
Inutile dire che tutto cio' e' basato sull'analisi del sorgente html "attuale" della pagina che hai usato come esempio; altre pagine richiederanno un approccio formalmente analogo, ma sostanzialmente diverso.
Ciao