Если вы сделаете Set elm = objElement.getElementsByTagName("span")
, тогда elm
будет содержать все span
теги, которые существуют в вашем коде.
Таким образом, For Each e In elm
будет проходить через них oop, и если он найдет один span
без title="Go To Device"
, ваша ячейка D5 покажет No Activity found2
и немедленно выйдет из подчиненного элемента. Таким образом, даже если в коде HTML где-то до или позже будет <span title="Go To Device">
, если существует хотя бы один span
без title="Go To Device"
, ваша ячейка всегда вернет No Activity found2
.
Так что вы должны введите "No Activity found2"
в ячейку до , когда вы начнете искать title="Go To Device"
(по умолчанию), если он не был найден, он останется по умолчанию "No Activity found2"
, в противном случае он будет перезаписан Commissioned
, Pending
или Active
:
Set objSubCollec = objCollection(0).contentWindow.document.getElementById("tabPage")
Set objElement = objSubCollec.contentWindow.document
Set elm = objElement.querySelectorAll("a.pseudoLink") 'remove this it does nothing because elm gets set in the next line.
Set elm = objElement.getElementsByTagName("span") 'now elm contains ALL span tags
'set "No Activity found2" as default …
Worksheets("Sheet2").Range("D5") = "No Activity found2"
'… and overwrite it with Commissioned/Pending/Active only if that is found.
For Each e In elm
If e.getAttribute("title") = "Go To Device" Then
If e.innerText Like "*Commissioned*" Then
Worksheets("Sheet2").Range("D5") = "Commissioned"
ElseIf e.innerText Like "*Pending*" Then
Worksheets("Sheet2").Range("D5") = "Pending"
Else
Worksheets("Sheet2").Range("D5") = "Active"
End If
End If
Next e
Обратите внимание, что если имеется более одного <span title="Go To Device">
, тогда только последний в коде будет результатом в D5, а все остальные, прежде чем будут перезаписаны этим последним результатом.