2012-11-09 11 views
5

Ich bin ein Makro erstellen, um Daten von der Website mit 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?

Antwort

5
Set imgObj = tdObj.getElementsByTagName("img") 

gibt eine Sammlung von Bildern (auch wenn es nur einen zu finden), so dass Sie ein bestimmtes Bild Adresse (zB):

dataArray(i, j) = imgObj(0).getAttribute("title") 
+0

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? –

+2

Ich denke, dass IXMLDOMNodeList ist Null-basiert so 'imgObj (0) .getAttribute (" Titel ") sollte funktionieren – barrowc

+0

@barrowc - guter Fang. Ich kann mich nie erinnern, was 0 ist und was 1-basiert ist ... –