vba 从 getElementsByTagName() 中跳过不存在的元素以防止错误
vba skip nonexisting elements from getElementsByTagName() to prevent error
我有这个:
<table class="series">
<tr><th>1.</th><td><div><a href="?test1">Link1</a></div></td></tr>
<tr><th>2.</th><td><b>Link2</b></td></tr>
<tr><th>3.</th><td><div><a href="?test3">Link3</a></div></td></tr>
</table>
我需要遍历每一个以找到没有 url link.
的地方
dim serieTest as Object
If element.tagName = "TABLE" And element.className = "series" Then
Set data_series = element.getElementsByTagName("td")
For Each serie In data_series
Set serieTest = serie.getElementsByTagName("a")(0).href
If Not (serieTest Is Nothing) Then
debug.print "link found!"
Else
debug.print "link NOT found!"
End If
Set serieTest = Nothing
Next
Set data_series = Nothing
End If
但我有错误:
Run-time error '91': Object variable or With block variable not set
在线:
Set serieTest = serie.getElementsByTagName("a")(0).href
知道如何防止这种情况吗?
我试过将 On Error Resume Next 放在错误行上方,但它直接进入 "ELSE" 因为它没有分配任何东西所以 "serie" 我总是 null.
当你得到一个 href 值时,它是一个字符串而不是一个对象。您可以按如下方式重写代码(尽管我会向您推荐我之前对您的一个问题的回答,该问题使用辅助函数和 select 案例更好地处理了这种情况):
Dim serieTest As Object, serieHref As String
If element.tagName = "TABLE" And element.className = "series" Then
Set data_series = element.getElementsByTagName("td")
For Each serie In data_series
serieHref = "link NOT found!"
If serie.getElementsByTagName("a").Length > 0 Then
Set serieTest = serie.getElementsByTagName("a")(0) 'object
If serieTest.hasattribute("href") Then
serieHref = serieTest.href
Debug.Print "link found!"
End If
End If
Debug.Print serieHref
Next
End If
我有这个:
<table class="series">
<tr><th>1.</th><td><div><a href="?test1">Link1</a></div></td></tr>
<tr><th>2.</th><td><b>Link2</b></td></tr>
<tr><th>3.</th><td><div><a href="?test3">Link3</a></div></td></tr>
</table>
我需要遍历每一个以找到没有 url link.
的地方dim serieTest as Object
If element.tagName = "TABLE" And element.className = "series" Then
Set data_series = element.getElementsByTagName("td")
For Each serie In data_series
Set serieTest = serie.getElementsByTagName("a")(0).href
If Not (serieTest Is Nothing) Then
debug.print "link found!"
Else
debug.print "link NOT found!"
End If
Set serieTest = Nothing
Next
Set data_series = Nothing
End If
但我有错误:
Run-time error '91': Object variable or With block variable not set
在线:
Set serieTest = serie.getElementsByTagName("a")(0).href
知道如何防止这种情况吗? 我试过将 On Error Resume Next 放在错误行上方,但它直接进入 "ELSE" 因为它没有分配任何东西所以 "serie" 我总是 null.
当你得到一个 href 值时,它是一个字符串而不是一个对象。您可以按如下方式重写代码(尽管我会向您推荐我之前对您的一个问题的回答,该问题使用辅助函数和 select 案例更好地处理了这种情况):
Dim serieTest As Object, serieHref As String
If element.tagName = "TABLE" And element.className = "series" Then
Set data_series = element.getElementsByTagName("td")
For Each serie In data_series
serieHref = "link NOT found!"
If serie.getElementsByTagName("a").Length > 0 Then
Set serieTest = serie.getElementsByTagName("a")(0) 'object
If serieTest.hasattribute("href") Then
serieHref = serieTest.href
Debug.Print "link found!"
End If
End If
Debug.Print serieHref
Next
End If