我在Excel中使用VBA来自动打开网站,输入凭据,导航到特定页面,然后单击下载文件的链接。当我这样做时,将弹出以下下载对话框,而不是在底部显示文件下载栏:
我从各种资源中拼凑而成的代码可以使我一路过关斩将,但我终生无法弄清楚如何使选择“保存”的过程自动化。我尝试了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