首页 > 解决方案 > 模拟鼠标点击从IE浏览器下载文件

问题描述

仪表板示例:

仪表板示例

我正在尝试模拟鼠标单击浏览器上的表单以下载报告。定位下载链接/图像时,我立即卡住了。我还意识到表单正在使用 post 方法来检索文件,所以我不确定仅模拟链接/图像上的鼠标点击是否足够。

Sub TestDownload()
    Dim elements As Object, element As Object, count As Long
    Dim IE As Object
    Set IE = CreateObject("InternetExplorer.Application")
    
    IE.Visible = True
    IE.Navigate "https://something.com/Dashboard"
    
    ' Wait while IE loading...
        Do While IE.Busy
            Application.Wait DateAdd("s", 1, Now)
        Loop
        
    count = 0
    Set elements = objIE.document.getElementsByTagName("a")
    
    For Each element In elements
        If element.className = "ExportCurrentExtInt" Then
                   element.Click
        End If
    Next
    
End Sub

<form id="myForm" name="myForm" method="post" action="/NSPortal/Dashboards/CEPDashboard">
    <input type="hidden" name="ReportDate" id="ReportDate" value="4/1/2020" />
    <input type="hidden" name="Domain" id="Domain" value="" />
    **<input type="hidden" name="SubmitButton" id="SubmitButton" value="jqGridExportToExcel"> *--> the value appears when i click on the link to initiate the download*
    <input type="hidden" name="ExportTarget" id="ExportTarget" value="ExportCurrentExtInt">**
    <input type="hidden" name="ExportFilterField" id="ExportFilterField" value="" />
    <input type="hidden" name="ExportFilterValue" id="ExportFilterValue" value="" />
    <input type="hidden" name="OpenTab" id="OpenTab" value=""/>
    <table id='tableDateSelection' border='0' cellpadding='0' cellspacing='0' width='100%' style='border-color: #F5F5F5'>

</select>

                                <tr>
                                    <td class="RoundedPanelCenterLeft"></td>
                                    <td><a id="ExportCurrentExtInt">Export Current EXT-INT Interfaces &nbsp;<img style="vertical-align:top" alt="Export current EXT-INT Interfaces to Excel" src="/NSPortal/Content/Images/excel.gif" border="0"/></a></td>
                                    <td class="RoundedPanelCenterRight"></td>
                                </tr>

</form>

我尝试使用 Element ID,但它给我一个错误。

Do
DoEvents
Loop Until IE.readyState = READYSTATE_COMPLETE

objIE.document.getElementById("ExportTarget").Click

End Sub

标签: excelvba

解决方案


推荐阅读