2017-02-01 9 views
-1

チェックボックスのチェック方法はほとんどありませんが、私が対処している状況はありません。ここでExcel VBA:内部テキストに基づいてWebページのチェックボックスをオンにします。

は、Webページのコードのサンプルです:

<tr class="odd"> 
 
    <td> 
 
    <input type="checkbox" name="device_id" value="3896"> 
 
    </td> 
 
    <td>text1</td> 
 
    <td>text2</td> 
 
    <td>xxx</td> 
 
    <td> 
 
    Good 
 
    </td> 
 
    <td> 
 
    </td></tr> 
 

 
<tr class="odd"> 
 
    <td> 
 
    <input type="checkbox" name="device_id" value="3955"> 
 
    </td> 
 
    <td>text3</td> 
 
    <td>text4</td> 
 
    <td>xxx</td> 
 
    <td> 
 
    Good 
 
    </td> 
 
    <td> 
 
</td></tr>

これは単なるサンプルである、このような "エントリー" の何百もあります。

ページを開き、必要な場所をナビゲートするマクロがあります。また、データベースによってtext1/text2、text3/text4などに割り当てられたIDの値に基づいてチェックボックスをチェックすることも問題ありません。問題は私がIDと私が知っているすべてがtext1/text2、text3/text4などであることを知らないということです。

私が苦労しているのは、それらのテキストだけを知っていればそのチェックボックスをチェックする方法ですか?テキストとIDをどのように一致させてそのIDを使用してチェックボックスをチェックするかがわかりますが、その一致をどうやって行うかわかりません。どんな助けでも感謝します:-)

ありがとう。

+0

3955とは何ですか、text1/2などとはどういう意味ですか、あなたが精緻化することができますか、またはデータベースに問い合わせて、text1のidを3955と見つけることができますか? –

+0

3955は、データベースによって割り当てられたランダムIDです。データベースはデバイスのリストであり、それぞれが名前(text1)とIP(text2)を持っています。何百ものデバイスがあり、それぞれにウェブページコードに「tr」セクションが1つあります。ある例では、2つのデバイスのコードがあります。私は例えばを選択する必要があります。 5つのデバイスがデータベースにある場合は、そのデバイスの横にあるチェックボックスをオンにして、データベースに何かをさせます。内部的に割り当てられているIDは分かりません。私はホスト名とIPだけを知っています。私はそのIDをtext1またはtext2に基づいて取得する必要があります(text3と4は2番目のデバイスなどです)。そして、そのIDをvbaコードで使用してチェックボックスをチェックします。 – mikit

+0

あなたはhtmlコントロールライブラリを使って見る必要がありますが、VBAを実際に投稿していないので、 'document.getelementsbytagname(" TABLE ")(0).getElementsByTagName(" TD " ) 'を探し、そのコレクションを2つのステップで処理してIDを取得します。 –

答えて

0

これは私のために働いている:

は「TR」セクションのホスト名またはIPがである見つけ、そしてちょうどID値を読み取ります。

' find tr and ID 
For i = 1 To 5000 
    checkdevX = ie.Document.getElementsByTagName("tr")(i).innerText 
    If InStr(checkdevX, "text2") Then 
     idvalue = ie.Document.getElementsByTagName("tr")(i).getElementsByTagName("td")(0). _ 
        getElementsByTagName("input")(0).getAttribute("value") 
     Exit For 
    End If 
Next i 

' check checkbox 
Set CheckBox = ie.Document.getElementsByTagName("input") 
    For Each idnumber In CheckBox 
     If (idnumber.getAttribute("value") = idvalue) Then 
      idnumber.Click 
      Exit For 
     End If 
    Next 
関連する問題