First, as PEH said, after using Dim Inv As Object
statement define the object, we need to use Set statement to set value.
Besides, please refer to the following options, if we want to find an element by ID property, it will return one element, and if we want to find elements by tag, class or name property, it will return multiple elements.
IE.document.getelementbyid("ID").value = "value" 'Find by ID
IE.document.getelementsbytagname("ID").value = "value" 'Find by tag
IE.document.getelementsbyclassname("ID").value = "value" 'Find by class
IE.document.getelementsbyname("ID").value = "value" 'Find by name
So, please modify your code as below (add Set
statement, change documents
to document
, change getelementsbyId
to getelementbyId
):
Dim Inv As Object
Set Inv = IE.document.getelementbyId("txt_invoiceno")
Inv.Value = "mytext"
Edit
The web page resource:
<form id="form1">
<input name="txt_invoiceno" type="text" maxlength="16" id="txt_invoiceno" tabindex="1" class="text-left" style="width:150px;">
</form>
The VBA script:
Sub Test()
Dim IE As Object
Dim startDateText As Object, endDateText As Object
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Visible = True
.Navigate "https://dillion132.github.io/default.html"
While IE.ReadyState <> 4
DoEvents
Wend
Dim Inv As Object
Set Inv = IE.document.getelementbyId("txt_invoiceno")
Inv.Value = "mytext"
End With
Set IE = Nothing
End Sub