2012-11-09 11 views
5

を使用してウェブサイトからデータを抽出するマクロを構築しています。現在、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")。誰かが私を助けることができますか?

答えて

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

あなたが使用して特定の画像(例えば)に対処できるよう、(発見される唯一の1があるとしても)画像のコレクションを返します助けるため

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

感謝を。しかし、これもうまくいかないようです。それは、 "実行時エラー '91':オブジェクト変数またはWithブロック変数が設定されていません" dataArray(i、j)= imgObj(1).getAttribute( "title")。それ以外の理由はありますか? –

+2

私はIXMLDOMNodeListがゼロベースだと思うので、 'imgObj(0).getAttribute(" title ")'は動作するはずです – barrowc

+0

@barrowc - 良いキャッチです。私は0のものと1ベースのものを思い出すことはできません。 –

関連する問題