Страницы: 1
RSS
IE скачать файл, vba
 
Здравствуйте.
Подскажите метод для скачивания файла через CreateObject("InternetExplorer.Application")

Например
http://am.cdnmob.org/pic/v2/gallery/preview/abstrakciya-fon-40658.jpg - ПКМ по картинке - Сохранить изображение как
http://7-zip.org.ua/ru/download.html - ПКМ по ссылке на файл - Сохранить объект как
Изменено: KUDRIN - 19.08.2017 07:25:43
 
Вариант без IE.
Код
#If Win64 Then
    #If VBA7 Then
        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
        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
        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
        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 uuu()
    Dim url$, fn$, ex$
    Dim sp
'------------------------
    url = "http://am.cdnmob.org/pic/v2/gallery/preview/abstrakciya-fon-40658.jpg"
    sp = Split(url, ".")
    ex = sp(UBound(sp))
    fn = ThisWorkbook.Path & "\файл из интернета." & ex
    URLDownloadToFile 0, url, fn, 0, 0
    Beep
End Sub
Изменено: kalbasiatka - 19.08.2017 09:22:05
 
:oops:  а сам URLDownloadToFile забыли?
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
kalbasiatka, Спасибо, но задача не скачать файл любым способом, а задача скачать через IE
Изменено: KUDRIN - 19.08.2017 11:54:21
 
Цитата
JeyCi написал:
а сам URLDownloadToFile забыли?
Это кому и о чём речь?
 
Цитата
kalbasiatka написал: Это кому и о чём речь?
просто увидела декларацию и не увидела Sub...
но если для библиотеки это родной метод - то и понятно...
лишь бы иметь уверенность, что эта библиотека всегда есть на компе?
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
JeyCi написал:
лишь бы иметь уверенность, что эта библиотека всегда есть на компе?
Была бы винда остальное найдётся, правда
Цитата
MSDN: Minimum supported client - Windows XP
 
спасибо, не слышала о ней раньше...
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
по VBA никак нельзя сохранить файл через IE ?
 
KUDRIN, объясните, зачем вам IE?
Почему нельзя использовать код, который вам привели во 2 посте?
На крайний случай можете работать с IE и эмулировать скачивание посредством SaveFileDialog + URLDownloadToFile.
 
Jungl, объясните, зачем вам Excel, когда можно делать на бумажке?
Jungl, объясните, зачем вам VBA, когда можно делать на C++ ?
Если нет в IE таких команд, просто напишите, что их нет.
Изменено: KUDRIN - 20.08.2017 12:20:20
 
KUDRIN, зря Вы так: делать вместо Excel на бумажке и усложнять скачивание - разные ведь ведь вещи, согласитесь. Вот  Jungl и спрашивает - зачем Вы усложняете себе жизнь? Ведь можно же нормально ответить?
 
Юрий М, в Excel некоторым людям намного сложнее писать, чем на бумажке. Я не усложняю и не упрощаю чью-либо жизнь, я пытаюсь скачать файл через IE. Как еще проще можно описать это действие? Не требуется помощь в включении компьютера, не требуется помощь в запуске Excel, не требуется помощь в скачивании файла, требуется помощь в скачивании файла через IE.
Изменено: KUDRIN - 20.08.2017 12:59:25
 
Вас просили объяснить. Думаю, не для того, чтобы просто так написать или оскорбить Вас. Возможно, после объяснения Вы получили бы лучше решение, чем Вы думаее. Ан нет, на попытку помощи иголки сразу надо выпустить...
 
Цитата
KUDRIN написал: я пытаюсь скачать файл через IE. Как еще проще можно описать это действие?
IE промежуточное звено между глобальной паутиной и вашим компьютером... если воспользуетесь Поисковиком по сайту вверху этой страницы - найдёте примеры скачивания файла и БЕЗ включения лишних программ (например, IE в данном случае)... даже в #2 вам уже показали, как с помощью встроенной в Windows библиотеки (она уже есть!) можно скачать файл из "глобальной паутины" БЕЗ посредника (например, IE)...
есть и др. библиотеки - MSXML2.XMLHTTP, MSXML.XMLHTTP, WinHttp.WinHttpRequest.5.1
P.S.
можно ведь и вопрос правильный задать, если вникнуть немного в тему своими силами (с помощью Поиска) и ответ нормально понять... КАК ЕЩЁ ВАМ РАСШИФРОВАТЬ РУС ЯЗ ??  
Изменено: JeyCi - 20.08.2017 13:20:24
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
В общем случае с IE все не так просто. Например, многие сайты перед скачиванием могут выдать предупреждение, что скачивание файла может быть угрозой. И программно нажать это сообщение не так-то и просто. Однако если использовать приведенную выше ссылку - таких проблем не будет. Плюс в случае с IE обязательно придется использовать и другие грабли, чтобы:
1. Найти именно ту кнопку, которая отвечает за начало скачивания файла
2. Найти именно то окно, которое запрашивает ГДЕ сохранить файл
3. Как-то указать там путь и подтвердить.

Это на самом деле задача куда сложнее, чем Вам кажется. Отсюда и вопросы: почему именно через IE? Может быть есть нюансы, которых мы не знаем?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Это на самом деле задача куда сложнее, чем Вам кажется.
В чём измеряется сложность? Там такие же 20-30 строк кода. Но стоило ли ради этих строк нырять в гугл на двое-четверо суток , если можно поделиться этим стандартным кодом, уже адаптированным под русскую локализацию например.
Изменено: KUDRIN - 20.08.2017 14:59:27
 
Цитата
KUDRIN написал:
Там такие же 20-30 строк кода
Так может поделитесь с сообществом этим кодом?
 
Пока до конца не переработал, но 4 разных способа в общем виде описаны тут:
01a, 01b FindWindow
02 PostMessage
03 IUAutomation
04 SetCursorPos
На некоторые способы критически влияет версия IE
Изменено: KUDRIN - 20.08.2017 16:45:27
 
KUDRIN,  спасибо за ссылки. Насколько я понял, вам не интересно WinAPI, но обсуждение по ссылке используют его. В чём смысл именно через ie?
 
А есть вариант без WinAPI добраться до IE и сохранить? За трое суток не увидел в гугле ни одного метода типа IE.FileSaveAS(URL), может у вас есть?
Изменено: KUDRIN - 20.08.2017 18:38:46
 
Цитата
KUDRIN написал: В чём измеряется сложность?
в том, что все страницы разные... (есть много нюансов)
Цитата
KUDRIN написал: не увидел в гугле ни одного метода типа IE.FileSaveAS
пост #15 увидели?..
и этот:
Цитата
The_Prist написал: Плюс в случае с IE обязательно придется использовать и другие грабли,
+1
берите Fiddler [как вариант других граблей] и сканируйте трафик на свою, интересующую вас, страницу... которой никто не знает кроме вас... смотрите заголовки (если надо) - .setRequestHeader ...
P.S. вариант:
Скачать файл из интернета без использования WinAPI - гугл не выдаёт DownloadFile?.. а Поиск по этому сайту CreateObject("Microsoft.XMLHTTP")?..
Изменено: JeyCi - 20.08.2017 19:40:33
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi, вас же никто не просит общаться на английском, немецком или китайском языке в этой теме. Пожалуйста, не просите использовать библиотеки, которые не дают доступ к CreateObject("InternetExplorer.Application"). Хоть в #15, хоть в #22, хоть в любом другом сообщении.
Если есть неописанные ранее библиотеки или код, который даёт доступ - буду очень рад и благодарен.
Изменено: KUDRIN - 20.08.2017 19:57:06
 
Цитата
KUDRIN написал: вас же никто не просит общаться на английско
я вас тоже не просила, а оставила ответ на ваш вопрос...
про ваш InternetExplorer.Application - вам даже гугл не отвечает...
полагаю, тема себя исчерпала
Изменено: JeyCi - 20.08.2017 20:06:56
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Страницы: 1
Наверх