【问题标题】:How to use wildcard in excel vba internet explorer如何在 excel vba Internet Explorer 中使用通配符
【发布时间】:2017-07-02 17:16:29
【问题描述】:

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

id="btn_edit_card_1NLQNQD0D93O"

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

点击该按钮
 document.getElementById

代码中没有类

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

【问题讨论】:

标签: vba excel internet-explorer wildcard


【解决方案1】:

如果您的 IE 版本是 9 或更高版本,您可以使用 HTMLDocument 类的 querySelectorAll 方法。

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

a[^=btn_edit_card]

^= 表示开头。

请参阅下面的示例代码,该代码从该页面中提取 cmets - 它们都是您问题下方表格中的 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 "http://stackoverflow.com/questions/42225761/how-to-use-wildcard-in-excel-vba-internet-explorer"
    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

【讨论】:

    【解决方案2】:

    正如@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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      相关资源
      最近更新 更多