Во-первых, как сказал PEH, после использования оператора Dim Inv As Object
для определения объекта нам нужно использовать оператор Set для установки значения.
Кроме того, обратите внимание на следующие параметры: если мы хотим найти элемент по свойству ID, он вернет один элемент, а если мы хотим найти элементы по свойству тега, класса или имени, он вернет несколько элементов.
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
Поэтому, пожалуйста, измените ваш код, как показано ниже (добавьте оператор Set
, измените documents
на document
, измените getelementsbyId
на getelementbyId
):
Dim Inv As Object
Set Inv = IE.document.getelementbyId("txt_invoiceno")
Inv.Value = "mytext"
Редактировать
Ресурс веб-страницы:
<form id="form1">
<input name="txt_invoiceno" type="text" maxlength="16" id="txt_invoiceno" tabindex="1" class="text-left" style="width:150px;">
</form>
Сценарий VBA:
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