excel - 如何通过 Excel VBA 自动单击 Internet Explorer 11 中的“保存”按钮
问题描述
我在 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
解决方案
推荐阅读
- javascript - 我需要帮助在更大的屏幕上渲染我的网站
- java - 如果 web 服务在 1 秒内没有响应超时,则返回 null
- php - Laravel Query Builder 不将变量识别为整数并添加引号
- python - Python函数在变量赋值期间打印输出
- laravel - Laravel 加密密码
- apache-camel - 为什么 fileNameSet 为空?
- r - 固定效应相互作用 lmer
- regex - Perl:搜索所有包含特定字符串的目录
- javascript - 使用 JS 在浏览器端验证 HUGE xml
- reactjs - React 16. 在执行图形渲染之前调用 setState 回调中的 alert 事件