Я пытаюсь использовать макрос Excel VB для загрузки файлов Excel с сайта, защищенного паролем членства. Я использую объект «InternetExplorer», чтобы открыть окно браузера, войти в систему и перейти на нужную страницу, а затем сканирую нужные ссылки на странице. Использование Workbooks.Open (URLstring) не работает, потому что Excel не регистрируется. Вместо фактического файла он открывает страницу html с просьбой войти в систему.
Я бы предпочел использовать макрос VB для автоматизации события щелчка правой кнопкой мыши «сохранить цель как» в Internet Explorer по правильной ссылке, но я точно не знаю, как это сделать.


На самом деле нет способа сделать это с помощью API Internet Explorer. Если это просто одноразовый скрипт, вы, вероятно, можете оправдать использование SendKeys для себя.
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
...
Sub YourMacro()
... Navigate IE to the correct document, and get it to pop
up the "Save As" dialog ...
Set sh = CreateObject("WScript.Shell")
sh.AppActivate "File Download"
sh.SendKeys "S"
Sleep 100
sh.SendKeys "C:\Path\filename.ext{ENTER}"
End Sub
Если вы знаете URL-адрес файла, который хотите загрузить, вы можете использовать эту процедуру:
Sub HTTPDownloadFile(ByVal URL As String, ByVal LocalFileName As String)
Dim http As Object ' Inet
Dim Contents() As Byte
Set http = New Inet
Set http = CreateObject("InetCtls.Inet")
With http
.protocol = icHTTP
.URL = URL
Contents() = .OpenURL(.URL, icByteArray)
End With
Set http = Nothing
Open LocalFileName For Binary Access Write As #1
Put #1, , Contents()
Close #1
End Sub