Я начал автоматизировать отчет. он взаимодействует с веб-сайтом в нашей внутренней сети для составления отчетов. Как только я получаю взаимодействие с выпадающим списком, оно вызывает всплывающее окно, в котором мне нужно ввести предварительно сгенерированные текстовые данные и нажать кнопку ОК, чтобы продолжить.
Это фрагмент страницы интранета:
<pre>
<form action="/Report/MarkJob" method="post">
<select name="status">
<option value="">--Select One--</option>
<option value="Mark Completed">Mark Completed</option>
<option value="Non Voting">Non Voting</option>
<option value="Foreign Client">Foreign Client</option>
<option value="Dump / Purge">Dump / Purge</option>
<option value="Job Closed">Job Closed</option>
<option value="Test Job">Test Job</option>
<option value="Unflagged for N&A">Unflagged for N&A</option>
<option value="Email Only">Email Only</option>
<option value="Canada NTC">Canada NTC</option>
<option value="Bulk Shipment">Bulk Shipment</option>
<option value="Not Following Day 40">Not Following Day 40</option>
<option value="No Options">No Positions</option>
</select>
<input data-val="true" data-val-number="The field ID must be a number." data-val-required="The ID field is required." id="item_ID" name="item.ID" type="hidden" value="16973962"><input id="comments" name="comments" type="hidden" value="">
<input type="submit" value="Select" onclick="javascript:return ShowMessage();">
</form>
</td>
</tr>
</tbody>
</table>
<br>
<br>
</div>
</div>
</section>
<script>
function submitdata(){
var valtext = $("#PPNumber").val(); //you can do also by getelementbyid
window.location.href = '/Report/Search/' + valtext;
}
function ShowMessage() {
var result = prompt("Please insert a comment if required.", "");
if (result == null) {
return false; //break out of the function early
}
document.getElementById('comments').value = result;
return true;
}
</script>
И скриншот веб-страницы:
Это код, который я пробовал:
Sub DropDayMacro()
'
' DropDayMacro Macro
'
Dim ie As InternetExplorerMedium
Dim A As String
ActiveCell.Select
Do Until ActiveCell.Value = ""
JobNumber = Mid(ActiveCell.Value, 1, 6)
Set ie = New InternetExplorerMedium
ie.Visible = True
ie.Navigate "http://10.23.16.37/Report/Search"
Do While ie.Busy: DoEvents: Loop
Do Until ie.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop
ie.document.getElementById("PPNumber").Value = JobNumber
ie.document.parentWindow.execScript "submitdata();", "javascript"
Do While ie.Busy: DoEvents: Loop
Do Until ie.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop
na = ActiveCell.Offset(0, 2).Value
Status = ActiveCell.Offset(0, 3).Value
If Status = "CL" Then
A = "Job Closed"
ElseIf na = "N" Then
A = "Unflagged for N&A"
End If
ie.document.getElementsByTagName("select").Item(0).Value = A
ie.document.parentWindow.execScript "ShowMessage();", "javascript"
ie.document.getElementById("item_ID").Value = "AS PER PROXY PLUS NOTES"
ActiveCell.Offset(1, 0).Select
Loop
End Sub