Ich bin ein Makro erstellen, um Daten von der Website mit vba zu extrahieren. Gegenwärtig kann ich einfach Wert aus dem Tabelleninhalt mit der Elementsyntax wie obj.getElementsByTagName("td").innerText
erhalten. Wenn es jedoch in einigen Zellen einige nicht-innereText-Daten gibt, bekomme ich Probleme. Es ist so:Get attribute string value von html
<img src="/images/amber_pending.gif" border="0" alt="Pending" title="Pending">
ich aus „title“ den Attributwert zu extrahieren versucht, mit Syntax ich von anderen gefunden:
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
Aber dieser Code geht Fehler jedes Mal, und es wird gesagt „Laufzeit Fehler '438': Objekt unterstützt diese Eigenschaft oder Methode nicht "an der Zeile dataArray(i, j) = imgObj.getAttribute("title")
. Könnte mir jemand helfen?
Dank für die Unterstützung. es scheint jedoch, dass dies nicht so gut funktioniert. es hieß "Laufzeitfehler '91': Objektvariable oder Mit Blockvariable nicht gesetzt" für dataArray (i, j) = imgObj (1) .getAttribute ("title"). Gibt es noch einen anderen Grund? –
Ich denke, dass IXMLDOMNodeList ist Null-basiert so 'imgObj (0) .getAttribute (" Titel ") sollte funktionieren – barrowc
@barrowc - guter Fang. Ich kann mich nie erinnern, was 0 ist und was 1-basiert ist ... –