NEO
NEO

Reputation: 23

How to automatically fill value in a box in webpage using via excel

This is not for the first time I am mentioning this...but yeah I am a rookie in vba and in need of help... I am having trouble in filling up a value in a box in webpage using vba excel.

The source code of the box is

<input
name="MultiRenameTable_OR:wt.epm.EPMDocument:3053059700_NEWNAME_JSID"
class="enabledfield"
id="MultiRenameTable_OR:wt.epm.EPMDocument:3053059700_NEWNAME_JSID"
style="WIDTH:98% onblur="setJSAttributeValue(this,'NEWNAME_JSID','MultiRenameTable', 'epmdoc_09876889_u46_drw',undefined)" type="text" size="25" ?=""
trlId="MultiRenameTable_epmdoc_09876889_u46_drw_NEWNAME_JSID"></input>

the code i wrote is

Sub xx()


Dim ie As Object
Dim doc As HTMLDocument
Dim lo As IHTMLElementCollection
Dim l As IHTMLElement

Set ie = CreateObject("internetexplorer.application")
ie.navigate "mysiteurl"
ie.Visible = True

Do While ie.Busy: DoEvents: Loop
Do While ie.readyState <> 4: DoEvents: Loop

Set doc = ie.document

doc.getElementById("MultiRenameTable_OR:wt.epm.EPMDocument3053059700_NEWNAME_JSID").Value = "xyz"

End Sub

It doesnt set the value. Also i cannot use "name","ID","trlID","onblur" because they keep on changing each time i launch IE. Please help me with this.

Upvotes: 1

Views: 133

Answers (1)

Comintern
Comintern

Reputation: 22185

I'm guessing from the setJSAttributeValue that the name will always contain the substring "NEWNAME_JSID". Just grab all of the input elements, then loop through them looking for it in the name:

Sub xx()

    Dim ie As Object
    Dim doc As HTMLDocument
    Dim lo As IHTMLElementCollection
    Dim l As IHTMLElement

    Set ie = CreateObject("internetexplorer.application")
    ie.navigate "mysiteurl"
    ie.Visible = True

    Do While ie.Busy: DoEvents: Loop
    Do While ie.readyState <> 4: DoEvents: Loop

    Set doc = ie.document
    Set lo = doc.getElementsByTagName("input")

    For Each l In lo
        If l.Name Like "*NEWNAME_JSID*" Then
            'Do whatever.
            Exit For
        End If
    Next l

End Sub

Upvotes: 1

Related Questions