Использование VB для автоматизации IE «сохранить цель как»

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

Я предпочел бы использовать макрос VB для автоматизации правого клика «сохранить цель как» в Internet Explorer по правильной ссылке, но я точно не знаю, как это сделать.

13.12.2008 16:29:13
2 ОТВЕТА

На самом деле нет способа сделать это с помощью Internet Explorer API. Если это просто одноразовый скрипт, вы, вероятно, можете оправдать использование 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

WScript.Shell документация

1
13.12.2008 20:14:54

Если вам известен 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
0
15.12.2008 18:07:40