Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Загрузка изображений из интернета по ссылкам в одну папку - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Загрузка изображений из интернета по ссылкам в одну папку (VBA)
Загрузка изображений из интернета по ссылкам в одну папку
grigor30 Дата: Среда, 20.09.2017, 11:41 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый день!
Помогите, пожалуйста, решить вопрос с помощью макросов (если это возможно): Загрузка изображений из интернета по ссылкам в соответствующие папки.
Есть файл со множеством строк (может быть до 1 млн строк, в примере строк значительно меньше), в котором есть столбец "N" со ссылками на фото, эти фото необходимо скачать на ПК в соответствующие вложенные папки, путь для сохранения фото указан в этом же файле в столбце "O"
Т.е. по примеру строки 2, после скачивания фото должно разместиться на ПК следующим образом: папка big, далее в ней папка new, далее в ней папка 6000, далее в ней папка 67323 и уже в ней скачанный файл, и так далее.
Сложность так же заключается еще и в том, что у некоторых ссылок есть дополнительные две, три или четыре фото. Чтобы скачать все фото товара, в конце ссылки цифру 1 нужно заменять на 2, на 3, и на 4 (получится до 4-х файлов по одной ссылке), необходимо скачать их все. Однако у некоторых ссылок дополнительных фото будет меньше 4-х или дополнительных фото не будет вовсе.
При этом в файле в разных строках встречаются повторяющиеся (одинаковые) ссылки на фото, если по повторяющейся ссылке фото уже скачано единожды, то повторно фото скачивать уже не нужно.

Пример файла во вложении.

Заранее большое спасибо!
К сообщению приложен файл: 3186218.xlsx (18.0 Kb)
 
Ответить
СообщениеДобрый день!
Помогите, пожалуйста, решить вопрос с помощью макросов (если это возможно): Загрузка изображений из интернета по ссылкам в соответствующие папки.
Есть файл со множеством строк (может быть до 1 млн строк, в примере строк значительно меньше), в котором есть столбец "N" со ссылками на фото, эти фото необходимо скачать на ПК в соответствующие вложенные папки, путь для сохранения фото указан в этом же файле в столбце "O"
Т.е. по примеру строки 2, после скачивания фото должно разместиться на ПК следующим образом: папка big, далее в ней папка new, далее в ней папка 6000, далее в ней папка 67323 и уже в ней скачанный файл, и так далее.
Сложность так же заключается еще и в том, что у некоторых ссылок есть дополнительные две, три или четыре фото. Чтобы скачать все фото товара, в конце ссылки цифру 1 нужно заменять на 2, на 3, и на 4 (получится до 4-х файлов по одной ссылке), необходимо скачать их все. Однако у некоторых ссылок дополнительных фото будет меньше 4-х или дополнительных фото не будет вовсе.
При этом в файле в разных строках встречаются повторяющиеся (одинаковые) ссылки на фото, если по повторяющейся ссылке фото уже скачано единожды, то повторно фото скачивать уже не нужно.

Пример файла во вложении.

Заранее большое спасибо!

Автор - grigor30
Дата добавления - 20.09.2017 в 11:41
SLAVICK Дата: Среда, 20.09.2017, 13:59 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
с помощью макросов

Тогда почему тема в "Вопросах по Excel" а не в ветке VBA? - перенес.

Скачать можно при помощи функции URLDownloadToFile
[vba]
Код

#If Win64 Then
    #If VBA7 Then    ' Windows x64, Office 2010
        Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
                (ByVal pCaller As LongLong, ByVal szURL As String, ByVal szFileName As String, _
                 ByVal dwReserved As LongLong, ByVal lpfnCB As LongLong) As LongLong
    #Else    ' Windows x64,Office 2003-2007
        Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
                    (ByVal pCaller As LongLong, ByVal szURL As String, ByVal szFileName As String, _
                    ByVal dwReserved As LongLong, ByVal lpfnCB As LongLong) As LongLong
    #End If
#Else
    #If VBA7 Then    ' Windows x86, Office 2010
        Declare PtrSafe 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
    #Else    ' Windows x86, Office 2003-2007
        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
    #End If
#End If

Sub d()
Dim i&, n&
n = Cells(Rows.Count, "N").End(xlUp).Row
For i = 2 To n
    URLDownloadToFile 0, CStr(Cells(i, "N")), CStr(Cells(i, "X")), 0, 0
    Application.StatusBar = i
    If i Mod 100 = 0 Then DoEvents
Next
Application.StatusBar = False
End Sub
[/vba]

В столбце Х - пропишите формулой ПОЛНОЕ название файла (куда сохранять) - и нажмите кнопку.
К сообщению приложен файл: 3186218.xlsm (33.9 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
с помощью макросов

Тогда почему тема в "Вопросах по Excel" а не в ветке VBA? - перенес.

Скачать можно при помощи функции URLDownloadToFile
[vba]
Код

#If Win64 Then
    #If VBA7 Then    ' Windows x64, Office 2010
        Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
                (ByVal pCaller As LongLong, ByVal szURL As String, ByVal szFileName As String, _
                 ByVal dwReserved As LongLong, ByVal lpfnCB As LongLong) As LongLong
    #Else    ' Windows x64,Office 2003-2007
        Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
                    (ByVal pCaller As LongLong, ByVal szURL As String, ByVal szFileName As String, _
                    ByVal dwReserved As LongLong, ByVal lpfnCB As LongLong) As LongLong
    #End If
#Else
    #If VBA7 Then    ' Windows x86, Office 2010
        Declare PtrSafe 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
    #Else    ' Windows x86, Office 2003-2007
        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
    #End If
#End If

Sub d()
Dim i&, n&
n = Cells(Rows.Count, "N").End(xlUp).Row
For i = 2 To n
    URLDownloadToFile 0, CStr(Cells(i, "N")), CStr(Cells(i, "X")), 0, 0
    Application.StatusBar = i
    If i Mod 100 = 0 Then DoEvents
Next
Application.StatusBar = False
End Sub
[/vba]

В столбце Х - пропишите формулой ПОЛНОЕ название файла (куда сохранять) - и нажмите кнопку.

Автор - SLAVICK
Дата добавления - 20.09.2017 в 13:59
grigor30 Дата: Среда, 20.09.2017, 14:30 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
SLAVICK, огромное спасибо, все отлично работает!
P.S.да, не обратил внимание, что вопрос нужно было адресовать по месту :)
 
Ответить
СообщениеSLAVICK, огромное спасибо, все отлично работает!
P.S.да, не обратил внимание, что вопрос нужно было адресовать по месту :)

Автор - grigor30
Дата добавления - 20.09.2017 в 14:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Загрузка изображений из интернета по ссылкам в одну папку (VBA)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!