2017-02-01 4 views
-1

Ich weiß, dass es einige Fragen gibt, wie Checkbox zu überprüfen, aber konnte nicht die Situation, mit der ich es zu tun habe. HierExcel VBA: Checkbox auf Webseite basierend auf inneren Text

ist die Probe von Webseiten-Code:

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

Dies ist nur ein Beispiel, es gibt Hunderte von "Einträge" wie diese.

Ich habe ein Makro, das eine Seite öffnet und navigiert, wo es sollte. Es ist auch kein Problem, das Kontrollkästchen basierend auf dem Wert zu aktivieren, bei dem es sich um eine ID handelt, die text1/text2, text3/text4 usw. intern von einer Datenbank zugewiesen wird. Problem ist, dass ich nicht kenne diese ID und alles, was ich weiß, ist Text1/Text2, Text3/Text4, etc.

Was ich kämpfe mit ist, wie man das Kontrollkästchen, wenn ich nur diese Texte kenne? Ich weiß, dass es einen Weg gibt, wie man Texte mit und ID zusammenbringt und dann diese ID benutzt, um die Checkbox zu markieren, aber ich habe keine Ahnung, wie ich diese Übereinstimmung machen soll. Jede Hilfe wird geschätzt werden :-)

Vielen Dank.

+0

Was 3955 ist, was text1/2 usw. bedeuten, können Sie erarbeiten, oder sagen Sie die Datenbank abfragen und die ID des text1 sagen finden, die 3955 sein würde? –

+0

3955 ist zufällige ID von der Datenbank zugewiesen. Datenbank ist eine Liste von Geräten, die jeweils einen Namen (text1) und IP (text2) haben. Es gibt Hunderte von Geräten, jede hat einen "tr" -Abschnitt im Webseitencode. In einem Beispiel gibt es einen Code für 2 Geräte. Ich muss z.B. 5 Geräte, die in der Datenbank sind, aktivieren Sie ein Kontrollkästchen neben dem Gerät und lassen Sie die Datenbank etwas tun. Ich kenne die ID nicht, da sie intern zugewiesen ist. Ich kenne nur Hostname und IP. Ich muss diese ID basierend auf dem Text1 oder Text2 erhalten (Text3 und 4 sind für das zweite Gerät, usw.) und dann diese ID in einem VBA-Code verwenden, um das Kontrollkästchen zu aktivieren. – mikit

+0

Sie müssen mit HTML-Steuerelemente Bibliothek suchen, haben Sie nicht tatsächlich gebucht Ihre VBA so kann nicht kommentieren, aber ich würde eine Sammlung verwenden mit 'document.getelementsbytagname (" TABLE ") (0) .getElementsByTagName (" TD ")) und durcharbeiten diese Sammlung in Schritten von 2, um die ID auf diese Weise zu erhalten. –

Antwort

0

Dies ist für mich arbeiten:

, in dem Finden „tr“ Abschnitt Hostnamen oder die IP ist und dann lesen Sie einfach den ID-Wert.

' 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 
Verwandte Themen