查找HTML按钮元素引用(类,标记等)以便VBA自动单击?

问题描述 投票:1回答:1

我正在尝试从我们公司的一个使用HTML的公司内部网站提取数据。我试图点击的按钮是一个CSV按钮,但尽管尝试了不同的方法,我无法让VBA找到这个元素。

我可以获得VBA打开网页,但我对HTML一无所知,因为我一直使用其他数据无效方法,

我已经尝试了usig .getElementsByClassName但我收到的对象不支持这种方法。

使用getElementsById允许我传递此但objElement然后不支持.Click

Sub OpenIE()

Dim IE As InternetExplorerMedium
Set IE = New InternetExplorerMedium

Dim HTMLDoc As HTMLDocument
Dim objElement As HTMLObjectElement

With IE
    .Visible = True
    .Navigate "internal website link"
    While .Busy Or .ReadyState <> READYSTATE_COMPLETE: Wend
    Set HTMLDoc = .document
    Set objElement = HTMLDoc.getElementById("btn btn-default buttons-csv buttons-html5")
    objElement.Click


    .Quit
End With

Set IE = Nothing
End Sub

HTML按钮代码:

<a class=" "btn btn-default buttons-csv buttons-html5"  tabindex="0" aria-controls="inboundTransfersTable" href="#"><span>CSV</span></a>

最终结果是允许CSV作为新的Excel工作簿/工作表打开,因为我非常熟悉排序/过滤数据。

由于缺乏知识,我不得不在路径上找到意大利面条代码的道歉

任何帮助将不胜感激

谢谢

html excel vba web-scraping element
1个回答
0
投票

尝试在css选择器中使用单个类

HTMLDoc.querySelector(".buttons-csv").click

这个

btn btn-default buttons-csv buttons-html5

是一个复合类,每个空格代表一个新类名的开头。可能只匹配一个类(首选)。我选择了buttons-csv。你可以简单地用“。”加入类。在选择器内部,以向选择器添加更多类,例如

.btn.btn-default

这在选择器中有两个类。


定时循环以确保元素存在:

Dim t As Date, ele As Object
Const MAX_WAIT_SEC As Long = 10

t = Timer
Do
    On Error Resume Next
    Set ele = HTMLDoc.querySelector(".buttons-csv")
    On Error GoTo 0
    If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While ele Is Nothing

If Not ele Is Nothing Then
    ele.Click
End If
© www.soinside.com 2019 - 2024. All rights reserved.