› Sviluppare funzionalita su Microsoft Office con VBA › estrazione immagine da url in file excel
-
AutoreArticoli
-
Buongiorno a tutti
avrei bisogno del vostro aiuto per ottimizzare l'utilizzo un file excelIn pratica tramite un programma scarico da web una serie di dati (vedi foglio Sheeto) dal quale copio ciò che mi interessa nel file "estrazione " a questo punto vorrei:
1. che copiando il link relativo all'immagine ( in colonna A) riportasse l'immagine stessa e non la stringa dello stesso
2. che copiando il link al quale fa riferimento la pagina (in colonna J) sia cliccabileps.
premetto che ho una conoscenza minima di macro e Vba per cui sarò SUPER GRATA per ogni vostro suggerimentoAllegati:
You must be logged in to view attached files.Se ho capito, vai sul foglio("sheet0""), e copi l'indirizzo della cella(C2).Vai sul foglio Estrazioni, attivi la cella (a2),col muose sulla cella tasto dx, e selezioni "inserisci collegamento ipertestuale", nella finestra che si apre, inserisci l'indirizzo che hai copiato precedentemente,vedi quello che succede.
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )ciao albatros, non mi succede niente non mi fa inserire collegamento, comunque mi servirebbe qualcosa in automatico non da dover inserire manualmente su ogni riga ...
Scusa Ellarossi
Nel file allegato sullo sheet0 in C2 ci sono due url
https://img3.idealista.it/blur/WEB_LISTING/0/id.pro.it.image.master/f9/dd/52/232252253.jpg; https://img3.idealista.it/blur/WEB_LISTING/0/id.pro.it.image.master/da/02/87/232252229.jpg
che come vedi fanno riferimento a file e quindi ad immagini diverse.
Quale dei due si deve prendere a riferimento?
Una volta appurato questo il tuo quesito è risolto.
Alfredo
ciao Alfredo,
non avevo fatto caso che sullo stesso ce ne erano 2 (fanno parte entrambi dello stesso immobile) a me servirebbe aprisse il 1°Allora riallega un nuovo file dove in colonna A metti una decina di URL singole.
Alfredo
Siccome lo avevo già preparato ti allego io un file.
Questo il codice che è all'interno del file.
Dopo aver creato una directory "C:\prova" clicca sul pulsante Inserisci immagini presente sul foglio1.
Poi, se vuoi, ne parliamo.
Option Explicit 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 Sub ScaricaImmagini() Dim ur As Long Dim strSavePath As String Dim URL As String Dim ret As Long Dim miorange As Range Dim cll As Range ur = Cells(Rows.Count, 1).End(xlUp).Row Set miorange = Range("a1:a" & ur) ' For Each cll In miorange URL = cll.Value strSavePath = "c:\prova" & "\" & cll.Offset(0, 2).Value & ".jpg" ret = URLDownloadToFile(0, URL, strSavePath, 0, 0) Next cll End Sub Sub InserisciImmagini() Dim i As Long Dim ur As Long Dim r As Range Dim ws As Worksheet Dim imagePath As String Dim img As Picture Dim shp As Shape Dim fname As String ur = Worksheets("Foglio1").Cells(Rows.Count, 1).End(xlUp).Row Set ws = Worksheets("Foglio1") For Each shp In ActiveSheet.Shapes shp.Delete Next shp For i = 1 To ur If ws.Range("a" & i).Value <> "" Then Set r = ws.Range("d" & i) fname = Dir("c:\prova\" & Range("c" & i).Value & ".jpg") '<------ Cambiare percorso If Len(fname) > 0 Then imagePath = "c:\prova\" & Range("c" & i).Value & ".jpg" '<------ Cambiare percorso End If Set img = ws.Pictures.Insert(imagePath) With img .ShapeRange.LockAspectRatio = msoFalse .Top = r.Top .Left = r.Left .Width = r.Width .Height = r.Height End With End If Next i End Sub Sub Generale() Call ScaricaImmagini Call InserisciImmagini End Sub
Allegati:
You must be logged in to view attached files.super efficiente, bravissimo!
Perdona la mia poca conoscenza... come creo la directory ?
No Ella non mi fare questa domanda
La devi creare da Windows; prova a dare uno sguardo qui.
https://www.aranzulla.it/come-creare-una-cartella-945821.html
A parte questo hai un po' compreso quel che ho fatto nel file che ti ho allegato?
Alfredo
Ah, volendo, sempre con il VBA si possono cancellare (se non dovessero servire) tutti i file presenti nella directory "c:\prova"
Comunque ho usato il (vecchio) termine directory; oggi si dice cartella
Quindi in Windows sai creare una cartella?
Alfredo
Alfredo sei un genio, funziona correttamente , BRAVO!
Praticamente fai scaricare le foto nella cartella "prova" e da lì con il numero che gli hai dato le importa sul file in formato immagine
Grazie milleBuongiorno Ellarossi
Ti ringrazio delle parole ma il tutto è frutto da tante ricerche in rete; io ho solo adattato il codice al tuo caso.
Piuttosto è importante che tu capisca, almeno a grandi linee, come è stato costruito il file.
Nelle colonne B e C ho inserito delle formule per estrarre il numero finale delle URL in modo da denominare in modo univoco i file con tali numeri.
Questo è stato possibile perchè tutte le URL hanno la stessa lunghezza; se così non fosse questo sistema salterebbe.
In tal caso in colonna D dovresti mettere dei numeri progressivi da 1 in poi ed i file avranno come nome 1.jpg, 2.jpg e così via.
Se desideri ulteriori spiegazioni sono qua.
Alfredo
ciao a tutti
sto leggendo questo post da giorni cercando di adattare questa macro al mio foglio di lavoro...
non ci sto riuscendo...
se vi posto il mio file potreste aiutarmi?
avrei bisogno delle immagini nella colonna ag e che vengano rinominate con l'id nella colonna k, la cosa diversa dall'esempio di sopra è che i link che ho io hanno una diversa lunghezza....
Allegati:
You must be logged in to view attached files.vrei bisogno delle immagini nella colonna ag e che vengano rinominate con l'id nella colonna k, la cosa diversa dall'esempio di sopra è che i link che ho io hanno una diversa lunghezza....
quindi tu vorresti che al posto del tuo link questo venga sostituito dalla'immagine che ti riporta al link. Quindi nella colonna "AG" non avresti piu il tuo link ma l'immagine.Se ho capito
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Grazie per la risposta tempestiva
in realtà le foto le dovrebbe scaricare in una cartella sull’unità c
in realtà le foto le dovrebbe scaricare in una cartella sull’unità c
se è questo quello che vuoi ottenere, inserisci in un modulo dell'editor VBA il codice che ti posto, naturalmente devi variare il percorso dove vuoi salvare le immagini.
Option Explicit 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 Sub ScaricaImmagini() Dim ur As Long Dim strSavePath As String Dim URL As String Dim ret As Long Dim miorange As Range Dim cll As Range ur = Cells(Rows.Count, "ag").End(xlUp).Row Set miorange = Range("ag2:ag" & ur) ' For Each cll In miorange URL = cll.Value strSavePath = "C:\Users\Desktop\provaimmagini" & "\" & cll.Offset(0, -22).Value & ".jpg" ret = URLDownloadToFile(0, URL, strSavePath, 0, 0) Next cll End Sub
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )albatros non ho parole.....
ci stavo sbattendo la testa da giorni....
ho dovuto solo adattare a 64bit cambiare savepath ed è andata alla perfezione
grazie ancora
Ciao a tutti,
sono giorni che provo ad inserire questi codici ma non sto riuscendo ad avere il risultato che vorrei.
ho un elenco di 2000 righe ed ognuna ha nella colonna B2 una url che mi riporta ad una immagine, io dovrei mettere le immagini nella colonna C al posto del collegamento al link come posso fare?
grazie a tutti
conviese sempre aprire una discusssione nuova, e non appoggiarsi a discussioni passate.
Cerca di allegare un file, senza da ti sensibili, per vedere la struttura per capirci qualcosa
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire ) -
AutoreArticoli