VBA自动化 - 使用IE 11(64位)下载文件

时间:2015-04-15 08:10:44

标签: vba automation

这个问题似乎已被问过dosens,但是我找到的解决方案似乎都无法解决我的问题。

由于网页使用的是证书令牌,因此在激活VBA脚本之前,我被迫手动登录网页,这没问题。一个重要的注意事项是报告的链接是动态的,因此我无法直接链接到报告本身,因此我必须使用我的脚本浏览网页。下面你找到我用来找到我登录到网页的窗口的脚本:

Sub WebPageOpen()

Dim HTMLDoc As HTMLDocument
Dim oHTML_Element As IHTMLElement

On Error GoTo Err_Clear

Set objShell = CreateObject("Shell.Application")
IE_count = objShell.Windows.Count
For X = 0 To (IE_count - 1)
    On Error Resume Next    ' sometimes more web pages are counted than are open
    my_url = objShell.Windows(X).document.Location
    my_title = objShell.Windows(X).document.Title

    If my_title Like "MY Webpage name" Then 'compare to find if the desired web page is already open
        Set IE = objShell.Windows(X)
        marker = 1
        Exit For
    Else
    End If
Next

If marker = 0 Then
    MsgBox ("Webpage is not open - Please log on to webpage")
    Exit Sub
Else
End If

Do
' Wait till the Browser is loaded
Loop Until IE.readyState = READYSTATE_COMPLETE

' I have removed all my navigation commands here,as it would just be bloating the query. It clicks the link and the Save/open ribbon appears in IE.

End sub

任何人都可以帮我解决一下如何与我下载文件时出现的打开/另存为功能区进行交互的方法吗?

1 个答案:

答案 0 :(得分:0)

该功能区称为 通知栏。

您可以使用Alt + N关注通知栏。然后发送{tab}键导航到特定按钮。

使用VBA,您可以使用Autohotkey.dll或AutoItX3.dll发送这些热键组合。

  1. 添加对AutoItX3.dll的引用(对于32位和64位操作系统)
  2. 附加以下内容

    设置X = CreateObject(" AutoItX3.Control")
    X.send!N {tab} {down 2} {enter}'这是为了另存为