Использование VB для автоматизации IE "сохранить цель как" - PullRequest
4 голосов
/ 13 декабря 2008

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

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

Ответы [ 2 ]

1 голос
/ 13 декабря 2008

На самом деле нет способа сделать это с помощью 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

0 голосов
/ 15 декабря 2008

Если вам известен 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
...