Как установить флажок на веб-странице с динамическими значениями c, используя Excel VBA? - PullRequest
1 голос
/ 24 апреля 2020

Я видел учебники, это очень информативно и очень легко понять.

Я сомневаюсь, что при установке флажка на веб-сайте с использованием EXCEL VBA значения флажка будут динамическими c. Кажется, быть очень сложным для меня. Если кто-то поможет мне исправить это, я буду чувствовать себя потрясающе. Я упомянул ниже элементы HTML для справки.

Требуется выбрать код квалификатора (2015, 2018 и KD) и удалить.

Sub Editing_APA_Qualifiers()

Dim IE As Object Dim Do c как набор HTMLDocument IE = CreateObject ("InternetExplorer.Application") Dim SHELL_OBJECT SHELL_OBJECT = "WScript.Shell" Set objShell = CreateObject (SHELL_OBJECT)

IE .Visible = True

'navigate URL

IE.navigate "URL"

Do While IE.readyState <> READYSTATE_COMPLETE Or IE.Busy: DoEvents: Loop

Set Doc = IE.document

' Set numrows = number of rows of data.
  NumRows = Range("A1", Range("A1").End(xlDown)).Rows.Count

  ' Establish "For" loop to loop "numrows" number of times.
  For intRow = 2 To NumRows

  IE.Visible = True

Do While IE.readyState <> READYSTATE_COMPLETE Or IE.Busy: DoEvents: Loop

Doc.getElementById("txtTimeStudyNbr").Value = ThisWorkbook.Sheets("data").Range("A" & intRow).Value
Doc.getElementById("Search").Click

Do While IE.readyState <> READYSTATE_COMPLETE Or IE.Busy: DoEvents: Loop

Doc.getElementsByName("chkDel").Value = ThisWorkbook.Sheets("data").Range("B" & intRow).Value(0).Click
Doc.getElementsByName("chkDel").Value = ThisWorkbook.Sheets("data").Range("C" & intRow).Value(0).Click
Doc.getElementsByName("chkDel")(7).Click
Doc.getElementById("Delete").Click
objShell.SendKeys "{Enter}"

Do While IE.readyState <> READYSTATE_COMPLETE Or IE.Busy: DoEvents: Loop

Doc.getElementById("lstQualifierTypes").Value = ThisWorkbook.Sheets("data").Range("E1").Value
Doc.getElementById("Search").Click

Do While IE.readyState <> READYSTATE_COMPLETE Or IE.Busy: DoEvents: Loop

Doc.getElementById("lstQualifiers").Value = ThisWorkbook.Sheets("data").Range("E2").Value
Doc.getElementById("ADD").Click

Далее

End Sub

Итак, как мы можем установить флажки.

For your easy reference
<input type="checkbox" name="chkDel" value="0|MY|2018~"></td>
<input type="checkbox" name="chkDel" value="1|MY|2017~"></td>
<input type="checkbox" name="chkDel" value="2|MY|2016~"></td>
<input type="checkbox" name="chkDel" value="3|MY|2015~"></td>
<input type="checkbox" name="chkDel" value="4|VT|L~"></td>
<input type="checkbox" name="chkDel" value="5|VL|KD~"></td>
<input type="checkbox" name="chkDel" value="6|VL|K#~"></td>

<tbody><tr style="background-color:#ada5bd">
                                <th>&nbsp;</th>
			        <th class="center">Del</th>
				<th class="center">Qualifier Type</th>
				<th class="center">Qualifier Code </th>
				<th class="center">Abbreviation </th>
				<th class="center">Print </th>
				<th class="center">Rev </th>
				<th class="center">User Id </th>
				<th class="center">Date </th></tr>

<!-- Printing -->
<!-- QT="MY" QC="2018" -->
<!-- UpdateId:VKUMARAG -->
<input type="hidden" name="QualifierType0" value="MY">
<input type="hidden" name="QualifierCode0" value="2018">
<input type="hidden" name="Print0" value="Y">
<tr id="tr0"><td width="1">	<input type="radio" name="rdOperation" onclick="return radio_onclick(0)"> </td>
<td width="1">
<input type="checkbox" name="chkDel" value="0|MY|2018~"></td>
<td class="center">&nbsp;
MY</td>
<td class="center">&nbsp;
2018</td>
<td class="left">&nbsp;
Eff: Ineff:  </td>
<td class="center">&nbsp;
Y</td>
<td class="center">&nbsp;
A</td>
<td class="left">&nbsp;
VKUMARAG</td>
<td class="left">&nbsp;
06-mar-2018</td>
</tr>

<!-- Printing -->
<!-- QT="MY" QC="2017" -->
<!-- UpdateId:VKUMARAG -->
<input type="hidden" name="QualifierType1" value="MY">
<input type="hidden" name="QualifierCode1" value="2017">
<input type="hidden" name="Print1" value="Y">
<tr id="tr1"><td width="1">	<input type="radio" name="rdOperation" onclick="return radio_onclick(1)"> </td>
<td width="1">
<input type="checkbox" name="chkDel" value="1|MY|2017~"></td>
<td class="center">&nbsp;
MY</td>
<td class="center">&nbsp;
2017</td>
<td class="left">&nbsp;
Eff: Ineff:  </td>
<td class="center">&nbsp;
Y</td>
<td class="center">&nbsp;
A</td>
<td class="left">&nbsp;
VKUMARAG</td>
<td class="left">&nbsp;
27-may-2016</td>

</tr>

<!-- Printing -->
<!-- QT="MY" QC="2016" -->
<!-- UpdateId:ACYRUS3 -->
<input type="hidden" name="QualifierType2" value="MY">
<input type="hidden" name="QualifierCode2" value="2016">
<input type="hidden" name="Print2" value="Y">
<tr id="tr2"><td width="1">	<input type="radio" name="rdOperation" onclick="return radio_onclick(2)"> </td>
<td width="1">
<input type="checkbox" name="chkDel" value="2|MY|2016~"></td>
<td class="center">&nbsp;
MY</td>
<td class="center">&nbsp;
2016</td>
<td class="left">&nbsp;
Eff: Ineff:  </td>
<td class="center">&nbsp;
Y</td>
<td class="center">&nbsp;
A</td>
<td class="left">&nbsp;
ACYRUS3</td>
<td class="left">&nbsp;
17-nov-2015</td>
</tr>

<!-- Printing -->
<!-- QT="MY" QC="2015" -->
<!-- UpdateId:APIMPORT -->
<input type="hidden" name="QualifierType3" value="MY">
<input type="hidden" name="QualifierCode3" value="2015">
<input type="hidden" name="Print3" value="Y">
<tr id="tr3"><td width="1">	<input type="radio" name="rdOperation" onclick="return radio_onclick(3)"> </td>
<td width="1">
<input type="checkbox" name="chkDel" value="3|MY|2015~"></td>
<td class="center">&nbsp;
MY</td>
<td class="center">&nbsp;
2015</td>
<td class="left">&nbsp;
Eff: Ineff:  </td>
<td class="center">&nbsp;
Y</td>
<td class="center">&nbsp;
A</td>
<td class="left">&nbsp;
APIMPORT</td>
<td class="left">&nbsp;
20-sep-2013</td>
</tr>
<!-- Printing -->
<!-- QT="VT" QC="L" -->
<!-- UpdateId:APIMPORT -->
<input type="hidden" name="QualifierType4" value="VT">
<input type="hidden" name="QualifierCode4" value="L">
<input type="hidden" name="Print4" value="Y">
<tr id="tr4"><td width="1">	<input type="radio" name="rdOperation" onclick="return radio_onclick(4)"> </td>
<td width="1">
<input type="checkbox" name="chkDel" value="4|VT|L~"></td>
<td class="center">&nbsp;
VT</td>
<td class="center">&nbsp;
L</td>
<td class="left">&nbsp;
Truck  </td>
<td class="center">&nbsp;
Y</td>
<td class="center">&nbsp;
A</td>
<td class="left">&nbsp;
APIMPORT</td>
<td class="left">&nbsp;
20-sep-2013</td>
</tr>
<!-- Printing -->
<!-- QT="VL" QC="KD" -->
<!-- UpdateId:VKUMARAG -->
<input type="hidden" name="QualifierType5" value="VL">
<input type="hidden" name="QualifierCode5" value="KD">
<input type="hidden" name="Print5" value="Y">
<tr id="tr5"><td width="1">	<input type="radio" name="rdOperation" onclick="return radio_onclick(5)"> </td>
<td width="1">
<input type="checkbox" name="chkDel" value="5|VL|KD~"></td>
<td class="center">&nbsp;
VL</td>
<td class="center">&nbsp;
KD</td>
<td class="left">&nbsp;
RANGER ICA  </td>
<td class="center">&nbsp;
Y</td>
<td class="center">&nbsp;
A</td>
<td class="left">&nbsp;
VKUMARAG</td>
<td class="left">&nbsp;
23-apr-2020</td>
</tr>
<input type="hidden" name="QualifierType6" value="VL">
<input type="hidden" name="QualifierCode6" value="K#">
<input type="hidden" name="Print6" value="Y">
<tr id="tr6"><td width="1">	<input type="radio" name="rdOperation" language="javascript" onclick="return radio_onclick(6)"> </td>
<td width="1">
<input type="checkbox" name="chkDel" value="6|VL|K#~"></td>
<td class="center">&nbsp;
VL</td>
<td class="center">&nbsp;
K#</td>
<td class="left">&nbsp;
RANGER OLD  </td>
<td class="center">&nbsp;
Y</td>
<td class="center">&nbsp;
A</td>
<td class="left">&nbsp;
APIMPORT</td>
<td class="left">&nbsp;
20-sep-2013</td>
</tr>

 </tbody>

enter image description here enter image description here enter image description here enter image description here

1 Ответ

0 голосов
/ 25 апреля 2020

Попробуйте использовать css атрибут = селекторы значений с оператором содержимого (*). Таким образом, вы можете указать stati c часть значения атрибута для сопоставления вместе с атрибутом типа узла.

Например,

ie.document.querySelector("[type=checkbox][value*='0|MY|2018']").click

Здесь я предполагаю, что 0|MY|2018 - это stati c в целевом узле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...