使用VB自动化IE“目标另存为”

Posted

技术标签:

【中文标题】使用VB自动化IE“目标另存为”【英文标题】:Using VB to automate IE "save target as" 【发布时间】:2008-12-13 16:29:13 【问题描述】:

我正在尝试使用 excel VB 宏从受会员密码保护的站点下载 excel 文件。我正在使用“InternetExplorer”对象打开浏览器窗口,登录并浏览到正确的页面,然后在页面中扫描我想要的链接。使用 Workbooks.Open(URLstring) 不起作用,因为没有记录 Excel。它打开的不是实际文件,而是要求登录的 html 页面。

我的偏好是使用 VB 宏在 Internet Explorer 中的正确链接上自动执行右键单击“目标另存为”事件,但我不知道具体该怎么做。

【问题讨论】:

【参考方案1】:

没有办法使用 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.extENTER"
End Sub

WScript.Shell documentation

【讨论】:

【参考方案2】:

如果您知道要下载的文件的 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

【讨论】:

以上是关于使用VB自动化IE“目标另存为”的主要内容,如果未能解决你的问题,请参考以下文章

网页通过另存为下载的代码,打开之后代码是压缩过的,怎么把格式调回来?一行一行的代码换行太恼火了

github上如何下载单个文件(文件点开-->Raw右键-->目标另存为)

html 表单生成链接。当您需要右键单击并“目标另存为”或制作JavaScript书签时非常有用。

VBA宏从IE中的链接下载多个文件

Vb 怎么调用IE

VB中如何让WebBrowser打开一个网址后就自动跳转到另一个网址