我正在尝试自动单击 Excel 图标操作以使用 VBA 从以下链接下载 Excel 数据 Financial Statement of a Firm
下面是该 Excel 图标的 html 代码
<div class="fri nav-item-right">
<a onclick="changPeriod(2);" class="red" id="hang_quy" style="cursor:pointer;">Hàng quý</a>"|"
<a onclick="changPeriod(1);" id="hang_nam" style="cursor:pointer;" class="">Hàng năm</a>
<span class="curp"><img src="/images/icon-excel.jpg" alt="#" id="divPoints"></span>
</div>
下面的 VBA 代码旨在触发 Excel 图标单击操作。
URL = "http://finance.tvsi.com.vn/Enterprises/FinancialStatements?symbol=AAA" ' & Range("TickerName")
Set objIE = CreateObject("InternetExplorer.Application")
ThisWorkbook.Activate
objIE.Visible = True
objIE.navigate URL
Do While objIE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop
Set HTMLDoc = objIE.document
Set oHTML_Elements = HTMLDoc.getElementsByClassName("fri nav-item-right")
For Each oHTML_Element In oHTML_Elements
For Each oHTML_Element_Li In oHTML_Element.getElementsByTagName("span")
oHTML_Element_Li.Children(0).Click
Next
Next
Do While objIE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop
objIE.Quit
发生的事情是单击了 Web 元素标记名称“a”,而不是属于标记名称范围的 Excel 图标。从上面的代码中我做错了什么?如果可能的话,请让我知道您对单击此 Excel 图标的想法。
感谢您阅读这篇文章,我期待收到您的建议。
此致
BK
最佳答案
这是从该站点下载 excel 文件的有效方法之一。当您执行以下宏时,您应该会在眨眼之间下载文件。您可以稍后按照您想要的方式格式化单元格。
顺便说一句,无论您是手动下载文件还是使用脚本下载文件,下载的 excel 文件一打开就会出现警告。但是,您可以忽略该警告并打开文件而不会出现任何问题。
Sub DownloadExcel()
Const URL$ = "http://finance.tvsi.com.vn/Enterprises/BangCanDoiKeToan?"
Dim aBody As Variant, sPath$, params$
params = "symbol=AAA&YearView=2021&period=2&donvi=1000000"
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", URL & params, False
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36"
.send
aBody = .responseBody
sPath = ThisWorkbook.Path & "\" & "output.xls"
End With
With CreateObject("ADODB.Stream")
.Type = 1
.Open
.write aBody
.SaveToFile sPath, 2
.Close
End With
End Sub
关于html - 从网页单击 Excel 图标的 VBA 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68516608/