如何在 excel vba Internet Explorer 中使用通配符

How to use wildcard in excel vba internet explorer

你能告诉我如何在 excel vba Internet Explorer 中使用通配符吗?

id="btn_edit_card_1NLQNQD0D93O"

每次那个数字都不一样。如何通过

单击该按钮
 document.getElementById

代码

中没有class
 <a id="btn_edit_card_1NLQNQD0D93O" href="/trades/bejelentes_egyszerusitett/1NLQNQD0D93O">Editing basic data</a>

正如@Nathan_Sav 所建议的,我可能会非常明智地补充一点,您将不得不解决您的集合问题。例如,遍历所有 "a" 标签,直到找到一个 "btn_edit_card_" 作为其名称一部分的标签。除非有多个 "a" 标签包含该短语,否则这将起作用。

    Set els = ie.Document.getElementsByTagName("a")
    For Each el In els
         If el.ID Like "btn_edit_card*" 
            el.click
            Exit For
'           Debug.Print el.ID, el.Name
         End If  
    Next el

如果你的IE版本是9以上可以使用HTMLDocumentclass的querySelectorAll方法。

这使用 CSS selectors 启用按属性过滤元素。在您的情况下,您正在寻找具有 id 且以 btn_edit_card 开头的 a 元素。这个选择器是:

a[^=btn_edit_card]

其中 ^= 表示 开头。

请参阅下面的示例代码,该代码从该页面提取评论 - 它们都是您问题下方 table 中的所有 tr 元素,它们都有 idcomment-123456 ] 其中数字可以从评论更改为评论(因为它们唯一地存储在数据库等中):

Option Explicit

Sub GetElementByWildcard()

    Dim objIe As InternetExplorer
    Dim objDoc As HTMLDocument
    Dim objElements As IHTMLDOMChildrenCollection
    Dim objElement As Object
    Dim lngCounter As Long

    On Error GoTo ExitFunction

    'get page content
    Set objIe = New InternetExplorer
    objIe.Visible = False
    objIe.navigate ""
    Do While objIe.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop

    'get document
    Set objDoc = objIe.document

    'get any <tr> with an id starting with comment-
    Set objElements = objDoc.querySelectorAll("tr[id^=comment-]")

    'iterate output
    lngCounter = 0
    While lngCounter < objElements.Length
        Set objElement = objElements.Item(lngCounter)
        Debug.Print objElement.innerText
        lngCounter = lngCounter + 1
    Wend

ExitFunction:
    If Err.Number <> 0 Then
        Debug.Print Err.Description
    End If

    objIe.Quit
    Set objDoc = Nothing
    Set objIe = Nothing


End Sub