Condividi:        

Download da sito web

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

Download da sito web

Postdi nicola_na78 » 08/02/17 13:00

Ciao a tutti,
secondo voi è fattibile questa cosa??

da un sito che chiameremo www.pippo.it devo scaricare delle immagini, il nome di queste immagini ce li ho nella colonna "B" di un file excel es. image1.jpg, image2.jpg ecc...

per scaricarli dal sito mi copio dal file excel il nome da scaricare, vado sul sito www.pippo.it e incollo il nome copiato:
www.pippo.it\image1.jpg, tasto destro salva con nome e parte il download che mi va a salvare il file nella cartella documenti, www.pippo.it\image2.jpg ecc....
perdendo un sacco di tempo a fare questo.

Si puo' fare una macro che mi faccia il download di tutte le immagini presenti nel foglio??

Vi ringrazio

Nicola
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Sponsor
 

Re: Download da sito web

Postdi patel » 08/02/17 17:25

prova questa

Codice: Seleziona tutto
Sub caricaAccantoAlNomeweb() ' foglio4
Dim cell, shp As Shape, target As Range
    myurl = "http://....................."  ' <<<<<< da modificare
    Set Rng = ActiveSheet.Range("B2:B7") ' <<<<<< da modificare
    For Each cell In Rng
       filenam = myurl & cell & ".jpg"
       cell.Offset(0, 1).Select
       ActiveSheet.Pictures.Insert(filenam).Select
       With Selection.ShapeRange.Item(1)
          .LockAspectRatio = msoTrue
          .Width = 50  ' <<<<<< da modificare
          .Height = 50  ' <<<<<< da modificare
       End With
    Next
   
End Sub
patel
Utente Senior
 
Post: 309
Iscritto il: 24/04/12 16:03

Re: Download da sito web

Postdi nicola_na78 » 08/02/17 17:45

Ciao Patel,
grazie per aver risposto....
La macro che hai postato tu funziona, solo che mi inserisce nel foglio excel l'immagine prelevata dal sito, invece io vorrei scaricarla e salvarla in una cartella.

Grazie
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Re: Download da sito web

Postdi Anthony47 » 09/02/17 00:19

Strano che patel ti abbia proposto quel codice... Riconoscera' certamente questa modifica...
Modifica il ciclo centrale della macro di patel come segue:
Codice: Seleziona tutto
For Each Elem In ie.Document.getElementsByTagName("img")
    picname = Elem.getAttribute("src")
    Cells(r, 2).Select
    npicname = GetWebFile(picname, ThisWorkbook.Path & "\AA\")   '<<< Vedi Testo
'    If npicname <> 0 Then
'        ActiveSheet.Pictures.Insert (npicname)
'        'Set newpic = ActiveSheet.Shapes.AddPicture(picname, msoFalse, msoTrue, ActiveCell.Left, ActiveCell.Top, ActiveCell.Width, ActiveCell.Height)
'    End If
    r = r + 1
Next

Poi su un Nuovo Modulo vba inserisci questa dichiarazione e questa funzione
Codice: Seleziona tutto
Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
  "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _
    szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
 
Function GetWebFile(ByVal myURL, ByVal myPath As String) As Variant
'byAnthony, ritorna Image Path & name OPPURE 0 se fail
Dim PathNName As String, URL As String
Dim mySplit, Resp As Long
mySplit = Split(myURL, "/")
PathNName = myPath & mySplit(UBound(mySplit))
Resp = URLDownloadToFile(0, myURL, PathNName, 0, 0)
If Resp = 0 Then
    GetWebFile = PathNName
    Exit Function
Else
    GetWebFile = 0
End If
End Function

Le immagini saranno salvate nella sottodirectory \AA da aggiungere alla directory in cui e' stato gia' salvato il file Excel; deve gia' esistere e puo' essere variata modificando l'istruzione marcata <<< nel codice (mi raccomando di rispettare la sintassi).

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

Re: Download da sito web

Postdi nicola_na78 » 09/02/17 13:10

Ciao Antony,
ho fatto come hai detto tu trasformando la macro di Patel in questo modo:
Codice: Seleziona tutto
Sub caricaAccantoAlNomeweb() ' foglio4
Dim cell, shp As Shape, target As Range
    myurl = "http://....................."  ' <<<<<< da modificare
    Set Rng = ActiveSheet.Range("B2:B7") ' <<<<<< da modificare
    For Each Elem In ie.Document.getElementsByTagName("img")
    picname = Elem.getAttribute("src")
    Cells(r, 2).Select
    npicname = GetWebFile(picname, ThisWorkbook.Path & "\AA\")   '<<< Vedi Testo
'    If npicname <> 0 Then
'        ActiveSheet.Pictures.Insert (npicname)
'        'Set newpic = ActiveSheet.Shapes.AddPicture(picname, msoFalse, msoTrue, ActiveCell.Left, ActiveCell.Top, ActiveCell.Width, ActiveCell.Height)
'    End If
    r = r + 1
Next
   
End Sub


poi in un modulo nuovo ho messo l'altro codice.

Sostituisco myurl con mio lancio la macro e mi da il seguente errore:
Errore di Run-time 424:
necessario oggetto.
la macro si ferma su questa parte del codice:
For Each Elem In ie.Document.getElementsByTagName("img")

Grazie
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Re: Download da sito web

Postdi Anthony47 » 10/02/17 01:28

Eh eh, mi ero distratto...
Quindi tu hai gia' il nome delle immagini che vuoi scaricare, in colonna B, da B2 in avanti.
Bastera' quindi concatenare l'url del sito col nome immagine per ottenere l'indirizzo completo

Allora vai sul Modulo dove hai inserito il secondo blocco di codice che avevo suggerito, e in coda aggiungi questa penultima versione di macro:
Codice: Seleziona tutto
Sub caricaPenultima()
Dim cell, shp As Shape, target As Range
    myURL = "http://....................."  '                         ' <<< da impostare
    Set Rng = ActiveSheet.Range(Range("B2"), Range("B2").End(xlDown)) ' <<< B2=Inizio elenco
    merr = "Errore sulle seguenti immagini:"
    For Each cell In Rng
        filenam = myURL & cell & ".jpg"                                ' <<<? Serve & ".jpg" ??
        npicname = GetWebFile(filenam, ThisWorkbook.Path & "\AA\")   '<<< Vedi Testo
        If npicname = 0 Then merr = merr & vbCrLf & filenam
    Next
    If Len(merr) > Len("Errore sulle seguenti immagini:  ") Then
        MsgBox (merr)
    Else
        MsgBox ("Completato...")
    End If
End Sub


Compila /controlla le righe marcate <<<; in particolare io suggerirei di inserire l'estensione del file immagine direttamente su colonna B, anche perche' potrebbe esserci un mix di .png, .jpg e altro; a questo punto la riga marcata <<<? deve diventare
Codice: Seleziona tutto
        filenam = myURL & cell


La macro da eseguire e' la Sub caricaPenultima, dopo aver selezionato il foglio con l'elenco immagini.
Ricorda che la subdirectory \AA deve gia' essere stata creata prima di lanciare la macro.

Eventuali file non scaricati saranno riportati in un msgbox finale.

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

Re: Download da sito web

Postdi patel » 10/02/17 08:14

Anthony47 ha scritto:Strano che patel ti abbia proposto quel codice... Riconoscera' certamente questa modifica...
La conosco, ma avevo interpretato male la richiesta
patel
Utente Senior
 
Post: 309
Iscritto il: 24/04/12 16:03

Re: Download da sito web

Postdi nicola_na78 » 10/02/17 12:28

Antony47, sei un mito....

la macro funziona,effettua il download dei file, l'unico problema è che non esce mai dal ciclo, va in loop e devo forzare l'arresto della macro mediante l'esecuzione di "Avvia gestione attività" di Windows.

Grazie

Nicola
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Re: Download da sito web

Postdi patel » 10/02/17 17:43

facci vedere la macro modificata da te
patel
Utente Senior
 
Post: 309
Iscritto il: 24/04/12 16:03

Re: Download da sito web

Postdi nicola_na78 » 10/02/17 19:14

Ciao Patel,
Eccolo:

Codice: Seleziona tutto
Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
  "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _
    szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
 
Function GetWebFile(ByVal myURL, ByVal myPath As String) As Variant
'byAnthony, ritorna Image Path & name OPPURE 0 se fail
Dim PathNName As String, URL As String
Dim mySplit, Resp As Long
mySplit = Split(myURL, "/")
PathNName = myPath & mySplit(UBound(mySplit))
Resp = URLDownloadToFile(0, myURL, PathNName, 0, 0)
If Resp = 0 Then
    GetWebFile = PathNName
    Exit Function
Else
    GetWebFile = 0
End If
End Function
---------------------------------------------------------------------------------------------------------------
Sub caricaPenultima()
Dim cell, shp As Shape, target As Range
    myURL = "mioUrl/"
    Set Rng = ActiveSheet.Range(Range("A1"), Range("A20").End(xlDown))
    merr = "Errore sulle seguenti immagini:"
    For Each cell In Rng
        filenam = myURL & cell & ".jpg"
        npicname = GetWebFile(filenam, ThisWorkbook.Path & "\download\")
        If npicname = 0 Then merr = merr & vbCrLf & filenam
    Next
    If Len(merr) > Len("Non sono state trovate le seguenti immagini:  ") Then
        MsgBox (merr)
    Else
        MsgBox ("Completato...")
    End If
End Sub
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Re: Download da sito web

Postdi patel » 11/02/17 07:54

controlla bene ll codice suggerito da Anthony, la riga corretta è
Set Rng = ActiveSheet.Range(Range("A1"), Range("A1").End(xlDown))
NON
Set Rng = ActiveSheet.Range(Range("A1"), Range("A20").End(xlDown))
patel
Utente Senior
 
Post: 309
Iscritto il: 24/04/12 16:03

Re: Download da sito web

Postdi nicola_na78 » 11/02/17 18:22

Ciao Patel, era proprio quello il problema ora è perfetta... Grazie ancora a te e a Anthony

Alla prossima...

Buon week end
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Re: Download da sito web

Postdi Anthony47 » 11/02/17 19:57

patel ha scritto:La conosco, ma avevo interpretato male la richiesta

Questa discussione e' stata la fiera delle sviste, perche' (come hai notato) anche io ho letto male la domanda e lo stesso nicola ha letto male la risposta...

Tutti dall'oculista!
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Download da sito web

Postdi nicola_na78 » 11/02/17 23:37

:-)
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Re: Download da sito web

Postdi patel » 12/02/17 09:13

non c'è bisogno dell'oculista ma solo di leggere con attenzione, cosa che non faccio spesso.
patel
Utente Senior
 
Post: 309
Iscritto il: 24/04/12 16:03


Torna a Applicazioni Office Windows


Topic correlati a "Download da sito web":


Chi c’è in linea

Visitano il forum: Nessuno e 46 ospiti