[英]How to close an Internet Explorer instance inside an Excel VBA
[英]How to use wildcard in excel vba internet explorer
您能告訴我如何在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>
正如@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或更高版本,則可以使用HTMLDocument
類的querySelectorAll
方法。
這使用CSS選擇器啟用按元素屬性過濾的元素。 在您的情況下,您正在尋找一個id
以btn_edit_card
開頭a
元素。 選擇器為:
a[^=btn_edit_card]
^=
意思是從開頭 。
請參閱下面的示例代碼,該代碼從此頁面提取注釋-它們都是問題下方表格中的tr
元素,它們的所有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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.