如何通过Excel VBA在Internet Explorer 11中自动单击“保存”按钮

时间:2018-08-03 19:58:10

标签: excel vba

我在Excel中使用VBA来自动打开网站,输入凭据,导航到特定页面,然后单击下载文件的链接。当我这样做时,将弹出以下下载对话框,而不是在底部显示文件下载栏:

Download Dialog

我从各种资源中拼凑而成的代码可以使我一路过关斩将,但我终生无法弄清楚如何使选择“保存”的过程自动化。我尝试了sendkeys都没有用。我尝试使用https://stackoverflow.com/a/32152712/5106668,但我也无法使用它,而且似乎更适合于文件下载栏在底部弹出的情况。如果我添加了debug.print以在立即窗口中获取h的值,则其值为0。

这是我的代码:

Sub UserData_Export()

Dim ieApp As Object
Dim ieDoc As Object
Dim path As String

'create a new instance of ie
Set ieApp = New InternetExplorer

'you don’t need this, but it’s good for debugging
ieApp.Visible = True

'assume we’re not logged in and just go directly to the login page
ieApp.Navigate "https://login.XXXXXXXXXX.com/login"
Do While ieApp.Busy: DoEvents: Loop
Do Until ieApp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop

Set ieDoc = ieApp.Document

'fill in the login form – View Source from your browser to get the control names
With ieDoc.forms(0)
    .UserName.Value = "USERNAME"
    .Password.Value = "PASSWORD"
    .submit
End With

Application.Wait (Now + TimeValue("0:00:05"))
Do While ieApp.Busy: DoEvents: Loop
Do Until ieApp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop

'now that we’re in, go to the page we want
ieApp.Navigate "https://XXXXXXXXXX.com"
Do While ieApp.Busy: DoEvents: Loop
Do Until ieApp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop

'simulate clicking "Export Users" link
ieApp.Navigate "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(" & Chr(34) & "ctl00$ctl00$ctl00$FormContentPlaceHolder$MainContentPlaceHolder$RightColumnPlaceHolder$ExportUsersLinkButton" & Chr(34) & ", " & Chr(34) & Chr(34) & ", true, " & Chr(34) & Chr(34) & ", " & Chr(34) & Chr(34) & ", false, true))"

'Wait for page to load
Do While ieApp.Busy Or Not ieApp.ReadyState = READYSTATE_COMPLETE
    DoEvents
Loop

' SAVE DIALOG HAS POPPED UP AT THIS POINT, CODE TO CLICK SAVE NEEDS TO GO HERE!!



'close 'er up
ieApp.Quit
Set ieApp = Nothing
End Sub

0 个答案:

没有答案