Home » excel » excel – VBA loop: Automate web form filling

excel – VBA loop: Automate web form filling

Posted by: admin May 14, 2020 Leave a comment

Questions:

My goal is to Fill web forms using dynamic data which is stored in excel table.
The proccess should look like the below:

  1. A.
    1. Go to link stored in “A”i
    2. Fill the given fields in web form using data from “A”i to “G”i
    3. Click “save”
    4. Wait 5 seconds
    5. Populate column “H”i with text: “Created”
    6. Repeat next line (i+1) until last row
    7. When finished(after last row), msgbox: “proccess completed”

Below is my version without a loop that works but only for B2:G2 Row.

Sub copy_project_loop()

Dim IE As Object
Dim Doc As HTMLDocument
Set IE = CreateObject("InternetExplorer.Application")
Dim SHELL_OBJECT
SHELL_OBJECT = "WScript.Shell"
Set objShell = CreateObject(SHELL_OBJECT)


IE.Visible = True
IE.navigate "URL link"

    Do While IE.Busy
         Application.Wait DateAdd("s", 1, Now)
    Loop
    Set Doc = IE.document

Doc.getElementById("Project|Name").Value = ThisWorkbook.Sheets("data").Range("B2").Value
Doc.getElementById("customer|UserDefinedIdTA").Value = ThisWorkbook.Sheets("data").Range("C2").Value
    Doc.getElementById("customer|UserDefinedIdTA").Focus
        objShell.SendKeys "{Enter}"
            Application.Wait DateAdd("s", 2, Now)
Doc.getElementById("selEngagement").Value = ThisWorkbook.Sheets("data").Range("D2").Value
Doc.getElementById("txtPlannedStart").Value = ThisWorkbook.Sheets("data").Range("E2").Value
Doc.getElementById("Project|ProjTimeAppTA").Value = ThisWorkbook.Sheets("data").Range("F2").Value
Doc.getElementById("Project|SecondProjTimeAppTA").Value = ThisWorkbook.Sheets("data").Range("G2").Value
    Application.Wait DateAdd("s", 5, Now)
Doc.getElementById("Button1").Click

End Sub

Kindly assist me to define a loop for this task.

Thanks for your support,
Slava.

How to&Answers:

To any one who might find it usefull, below is a great example of how to loop trought dynamic range of data stored in table and populate web form with it.
Big Thanks to Kamolga who helped me with this wonderful assignment.

Sub DynamicWebPage()

' here I define elemnts for the loop
Dim sht As Worksheet
Set sht = ThisWorkbook.Sheets("data")
Dim LastRow As Long
Dim i As Long
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row

' here I define Internet Explorer
Dim IE As Object
Dim Doc As HTMLDocument
Set IE = CreateObject("InternetExplorer.Application")

' here I define Object to sendkeys
Dim SHELL_OBJECT
SHELL_OBJECT = "WScript.Shell"
Set objShell = CreateObject(SHELL_OBJECT)

' here I define range for the loop
For i = 2 To LastRow

' here I ask the Internet explorer to be visable & Navigate to value in cell "H"i
IE.Visible = True
IE.navigate sht.Range("H" & i).Value

' here I ask the Internet explorer to wait few seconds
Do While IE.Busy
    Application.Wait DateAdd("s", 5, Now)
Loop

Set Doc = IE.document

'******* From here the macro fill the data from excel table in range into WEB elements******
Doc.getElementById("Project|Name").Value = sht.Range("A" & i).Value
Doc.getElementById("customer|UserDefinedIdTA").Value = sht.Range("B" & i).Value
Application.Wait DateAdd("s", 1, Now)
Doc.getElementById("customer|UserDefinedIdTA").Focus
objShell.SendKeys "{Enter}"
Application.Wait DateAdd("s", 5, Now)
Doc.getElementById("selEngagement").Value = sht.Range("C" & i).Value
'date format should be m/d/yyyy
Doc.getElementById("txtPlannedStart").Value = sht.Range("D" & i).Value
Doc.getElementById("Project|ProjTimeAppTA").Value = sht.Range("E" & i).Value
Doc.getElementById("Project|SecondProjTimeAppTA").Value = sht.Range("F" & i).Value
Application.Wait DateAdd("s", 5, Now)
Doc.getElementById("Button1").Click

' here I ask to populate column "G"i with "created" string to know that this raw was successfully done
sht.Range("G" & i).Value = "Created"

Next i
MsgBox "Process 100% completed"

End Sub