Data feed with web address to pictures

scubajj

New Member
Joined
Sep 17, 2011
Messages
6
Hello,

I have an excel data feed that has http://xxx. xxx is a link to individual pictures. I need to download these picture and save them as a jpg and change the file name as well. I have a database with about 2000 items. Can this be done?

Thanks
JJ
 

Excel Facts

Fastest way to copy a worksheet?
Hold down the Ctrl key while dragging tab for Sheet1 to the right. Excel will make a copy of the worksheet.
Try this code for a start. I've assumed that the image URLs are in column A, starting at row 2. The images are downloaded to the folder defined by the 'downloadToFolder' variable, and this folder and all intermediate folders must exist. The images aren't renamed (please explain exactly how you want them to be renamed), but are saved with the original file name from the URL.

Put the code in a new module in your workbook containing the image URLs, and run the Download_All_Images macro with the sheet containing the image URLs (in column A) as the active sheet.
Rich (BB code):
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
  
Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" Alias "DeleteUrlCacheEntryA" _
    (ByVal lpszUrlName As String) As Long
  
Private Const BINDF_GETNEWESTVERSION As Long = &H10



Public Sub Download_All_Images()

    Dim downloadToFolder As String
    Dim lastRow As Long
    Dim URL As Variant
    Dim FileName As String
    
    downloadToFolder = "C:\Temp\Excel\images\"          'THIS FOLDER MUST EXIST
    
    If Right(downloadToFolder, 1) <> "\" Then downloadToFolder = downloadToFolder & "\"
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row
    
    For Each URL In Range("A2:A" & lastRow)
        FileName = downloadToFolder & Mid(URL, InStrRev(URL, "/") + 1)
    
        If Not DownloadFile(CStr(URL), FileName) Then
            MsgBox "Error downloading " & URL & " to " & FileName
        End If
    Next
    
End Sub


Private Function DownloadFile(URL As String, LocalFileName As String) As Boolean
    
    Dim RetVal As Long
    
    DeleteUrlCacheEntry URL
    RetVal = URLDownloadToFile(0, URL, LocalFileName, BINDF_GETNEWESTVERSION, 0)
    DownloadFile = (RetVal = 0)

End Function
 
Upvote 0
John,

Wow! I cant thank you enough. I am running the macro and it seems to be doing great! As far as the renaming, I wanted to rename the files to what was in columb B.
 
Upvote 0
John,

Thats what I was wondering, is it possible to download from column a and rename the file to what was in column B?
 
Upvote 0

Forum statistics

Threads
1,224,503
Messages
6,179,134
Members
452,890
Latest member
Nikhil Ramesh

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top