如何在Excel VBA Internet Explorer中使用通配符

你能告诉我如何在Excel VBA的Internet Explorer中使用通配符?

id="btn_edit_card_1NLQNQD0D93O" 

每次在不同的数字。 如何通过点击该button

  document.getElementById 

代码中没有类

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

正如@Nathan_Sav所build议的,我可以补充说明一点,那就是你必须用集合来解决你的问题。 例如,循环遍历所有“a”标签,直到find一个“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或以上,您可以使用HTMLDocument类的querySelectorAll方法。

这使用CSSselect器来启用元素的属性过滤。 在你的情况下,你正在寻找一个idbtn_edit_card开头a元素。 这个select器是:

a[^=btn_edit_card]

^=表示开始的地方

请参阅下面的示例代码,从这个页面中提取评论 – 它们都是在你的问题下的表格中的tr元素,它们都有comment-123456 id comment-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