5
我正在构建一个使用vba从网站中提取数据的宏。目前,我可以使用元素语法(如obj.getElementsByTagName("td").innerText
)轻松从表格内容中获取价值。但是,当某些单元格中存在一些非innerText数据时,我遇到了麻烦。它是这样的:从html获取属性字符串值
<img src="/images/amber_pending.gif" border="0" alt="Pending" title="Pending">
我尝试使用语法我从别人发现提取“标题”属性值:
For Each tbObj In doc.getElementsByClassName("report removeTdBorder")
i = 1
For Each trObj In tbObj.getElementsByTagName("tr")
If i >= 3 Then
j = 1
For Each tdObj In trObj.getElementsByTagName("td")
If j = 1 Then
Set imgObj = tdObj.getElementsByTagName("img")
dataArray(i, j) = imgObj.getAttribute("title")
Debug.Print imgObj.getAttribute("title")
ActiveCell.Offset(0, j) = dataArray(i, j)
ActiveCell.Offset(0, j).WrapText = False
Else
dataArray(i, j) = tdObj.innerText
Debug.Print i & ", " & j & ": " & dataArray(i, j)
ActiveCell.Offset(0, j) = dataArray(i, j)
ActiveCell.Offset(0, j).WrapText = False
End If
j = j + 1
Next tdObj
ActiveCell.Offset(1, 0).Activate
End If
i = i + 1
Next trObj
Next tbObj
但这一代码进入错误每次和它说:“运行时间错误'438':对象不支持此属性或方法“在行dataArray(i, j) = imgObj.getAttribute("title")
。有人能帮助我吗?
感谢帮助。然而,看起来这个效果并不好。它表示对于dataArray(i,j)= imgObj(1).getAttribute(“title”),“运行时错误'91':对象变量或块变量未设置”。有没有其他原因? –
我认为IXMLDOMNodeList是基于零的,所以'imgObj(0).getAttribute(“title”)'应该可以工作 – barrowc
@barrowc - 很好的结果。我永远不会记得什么是0和什么是1 ... –