Я новичок в VBA и прошу прощения, если этот вопрос не очень хороший.
Могу ли я получить список номеров в excel и автоматизировать процесс ввода их на веб-страницу по одномуодин?Пользователь должен войти в систему только один раз, но каждый раз, когда ему нужно нажимать кнопки, прежде чем получать информацию о номере с веб-страницы.
У меня есть список таких номеров:
Я хочу автоматизировать процесс ввода их на веб-страницу,Я могу ввести первый номер, нажать кнопки и скопировать данные обратно в Excel.Тем не менее, я не уверен, как сделать цикл программы, чтобы он делал это для каждого числа в столбце.Прямо сейчас у меня настроен код, так что должен работать, но он просто делает первое число и останавливается.
Вот пример (, который я только сейчас ) разработан, который отражает сайт, который я использую.Он идет с этой страницы, где пользователь вводит имя пользователя и пароль, и нажимает Enter ....
.... на эту страницугде пользователь нажимает Инициирует , затем Флажок , затем Просмотр (и каждая «строка» кнопок отображается только после нажатия на предыдущую) ....
.... на эту страницу, где пользователь щелкает историю, а затем вводит одно из чисел.
В резюме: Код, который у меня есть в данный момент, входит в систему на этом сайте, вводит имя пользователя и пароль.Прессы входят.Затем переходит к следующему экрану, где я нажимаю кнопку «инициировать», затем установите флажок, затем просмотрите.Далее он переходит к следующему экрану, где программа нажимает кнопку истории.Затем он возвращается к Excel (в столбец A), вынимает первое число и вводит его там, где написано «Number Here», и нажимает кнопку ввода.Это приводит меня к странице с кучей информации, которую я затем копирую и вставляю обратно в Excel.
Опять же, у меня работает программа для этих факторов.
Однако , я полагаю, мой код должен перемещаться на следующее число в столбце (т. Е. Делать вышеупомянутые шаги сначала для ячейки A3, затем для ячейки A4и т. д.), но это , а не .
Ниже мой код:
* Я публикую упрощенную версию кода.Я говорил выше, как я хочу, чтобы он копировал / вставлял обратно в Excel и т. Д., Но все это работает так, как я хочу.Моя ** главная проблема заключается в том, чтобы выяснить, как сделать это так, чтобы он входил в систему, нажимал кнопки, вводил номер из Excel, затем возвращался на первый экран, снова нажимал кнопки, вводил следующий номер и т. Д.
Option Explicit
Sub _NumberFix()
Dim IE As Object
Dim IeDoc As Object
Dim aInput As Object
Dim eInput As Object
Dim svalue1 As Object
Dim a As Object
Dim b As Object
Dim elems As Object
Dim t As Date
Dim i As Long, lastrow As Long
Dim results As Variant, wkshtnames()
Dim ws As Worksheet, wks As Excel.Worksheet
Dim NewName As String
Dim sheet As Worksheet
Dim duplicate As Boolean
Const MAXWAIT_sec As Long = 10
Set ws = Sheets("VALUES")
Set IE = CreateObject("InternetExplorer.application")
IE.Visible = True
IE.Navigate ("http://mywebsite.com/")
Do While IE.busy: DoEvents: Loop
Set IeDoc = IE.document
'Enters username and password
With IeDoc.all
.UserName.Value = "userr"
.Password.Value = "password"
End With
With IE.document.forms("signingin")
.document.forms(0).submit
End With
Application.Wait (Now + TimeValue("0:00:03"))
Set IeDoc = IE.document ' set new page source
t = Timer
Do
On Error Resume Next
Set elems = IeDoc.queryselector("input[value=Initiate]")
On Error GoTo 0
If Timer - t > MAXWAIT_sec Then
Exit Do
End If
Loop While elems Is Nothing
If Not elems Is Nothing Then
elems.Item.Click
End If
Application.Wait (Now + TimeValue("0:00:03"))
IeDoc.getElementByID("checkConf").Click
For Each aInput In IeDoc.getElementsbyTagName("input")
If aInput.getAttribute("value") = "Request" Then
aInput.Click
Exit For
End If
Next aInput
Do While IE.busy: DoEvents: Loop
'Selects historical
For Each aInput In IeDoc.getElementsbyTagName("input")
If aInput.getAttribute("value") = "History" Then
aInput.Click
Exit For
End If
Next aInput
lastrow = ws.Cells(ws.rows.Count, "A").End(xlUp).Row
IE.Visible = True
For i = 3 To lastrow
Set IeDoc = IE.document ' set new page source
Set svalue1 = IeDoc.getElementByID("Number")
svalue1.Value = ws.Cells(i, 1).Value 'takes the number out and enters
'presses submit once numb is entered
For Each aInput In IeDoc.getElementsbyTagName("input")
If aInput.getAttribute("value") = "Submit" Then
aInput.Click
Exit For
End If
Next aInput
IE.Navigate ("https://mywebsite.com/")
Do While (IE.READYSTATE <> 4 Or IE.busy <> False): DoEvents: Loop
IE.Visible = True
Exit For
Next i
Do While (IE.READYSTATE <> 4 Or IE.busy <> False): DoEvents: Loop
IE.Visible = True
End Sub