Rohan
Rohan

Reputation: 319

How to submit form data excel vba

I am trying to enter parcel ID: 220022400803300 and trying to get result but even after putting the parcel ID in the search box and clicking on submit button it's returning no result found.

Can anyone please help me with this or if there's a better way to do this please let me know.

The site is http://eringcapture.jccal.org/caportal/CAPortal_MainPage.aspx after visiting that site I click on Search your Real Property. Click Here. at the bottom of page then I select parcel # radio button and put the parcel id number 220022400803300 and click on Search button but it returns no result found while do it manually it gives 1 result.

Option Explicit
Option Compare Text

Dim fRD As Long, i As Long, fSR As Long, j As Long
Dim pID As String
Dim IE As SHDocVw.InternetExplorer
Dim Doc As MSHTML.HTMLDocument
Dim urL As String
Dim fnd As Boolean

Sub genOP()

With RD

    fRD = .Range("A" & .Rows.Count).End(xlUp).Row
    Set IE = New SHDocVw.InternetExplorer
    urL = "http://eringcapture.jccal.org/caportal/CAPortal_MainPage.aspx"

    For i = 2 To 2

        fSR = SR.Range("A" & SR.Rows.Count).End(xlUp).Row + 1
        pID = Trim(Format(.Range("A" & i).Value, "0"))    ' get PID

        If Len(pID) < 8 Then GoTo nextRow

        IE.Visible = True
        IE.navigate urL

        Call WaitForIE
        Set Doc = IE.document
        Doc.getElementById("Iframe1").contentDocument.getElementById("RealSearchLink").Click
        Call WaitForIE
        Doc.getElementById("Iframe1").contentDocument.getElementById("SearchByParcel").Checked = True

        'SearchByTB
        'Delete the first 2 digits from the excel data (parcel ID), e.g. 22002240080330000000 (instead of 0122002240080330000000)
        'pID = Right(pID, Len(pID) - 2)

        Doc.getElementById("Iframe1").contentDocument.getElementById("SearchText").Value = pID  'Put id in text box
        Doc.getElementById("Iframe1").contentDocument.getElementById("Search").Click  'search button

        Call WaitForIE

        fnd = False

        If Trim(Doc.getElementById("Iframe1").contentDocument.getElementById("TotalRecFound").innerText) = "No Records Found." Then
            For j = 1 To 6

                pID = Left(pID, Len(pID) - 1)

                Doc.getElementById("Iframe1").contentDocument.getElementById("SearchText").Value = pID  'Put id in text box
                Doc.getElementById("Iframe1").contentDocument.getElementById("Search").Click  'search button
                Call WaitForIE

                If Trim(Doc.getElementById("Iframe1").contentDocument.getElementById("TotalRecFound").innerText) <> "No Records Found." Then
                    'Result Found

                    Stop
                    fnd = True
                    Exit For
                End If
            Next j

        Else
            'Result Found

            Stop
            fnd = True
        End If

        If Not fnd Then
            SR.Range("A" & fSR) = "No Records Found"
        End If


nextRow:
    Next i

    IE.Quit
    Set IE = Nothing

End With

MsgBox "Process Completed"

End Sub



Sub WaitForIE()
While IE.Busy Or IE.readyState <> READYSTATE_COMPLETE
    DoEvents
Wend
Application.Wait Now + TimeValue("00:00:05")
End Sub

Upvotes: 2

Views: 798

Answers (1)

exSnake
exSnake

Reputation: 672

There is an hidden Pid on the page with a different string format.

Add to your code:

    'SearchByTB
    'Delete the first 2 digits from the excel data
    '(parcel ID), e.g. 22002240080330000000 (instead of 0122002240080330000000)
    'pID = Right(pID, Len(pID) - 2)

    'Creating an hidden pid with string format like this: 22 00 22 4 008 033.00
    hiddenPID = Left(pID, 2) & " " & _
                Mid(pID, 3, 2) & " " & _
                Mid(pID, 5, 2) & " " & _
                Mid(pID, 7, 1) & " " & _
                Mid(pID, 8, 3) & " " & _
                Mid(pID, 11, 3) & "." & _
                Mid(pID, 14, 2)

    Doc.getElementById("Iframe1"). _
        contentDocument.getElementById("SearchText"). _
        Value = pID  'Put id in text box
    Doc.getElementById("Iframe1"). _
        contentDocument.getElementById("HidParcelNo"). _
        Value = hiddenPID  'Put hidden pID in the hidden element
    Doc.getElementById("Iframe1"). _
        contentDocument. _
        getElementById("Search").Click  'search button

Founded simply looking on the POST request the page did when you clicked the searchbox.

Upvotes: 2

Related Questions