Невозможно автозаполнить вкладки сайта через Excel VBA - PullRequest
1 голос
/ 14 октября 2019

enter image description here

Мне удалось создать приведенный ниже код, но я не могу автоматически заполнить поля, отмеченные красными стрелками на изображении, так как нет идентификаторадоступно для них в HTML-коде.

Все вкладки, показанные на изображении, не имеют идентификаторов.

Какой должна быть кодировка для их заполнения?

Sub TDS_Autofill()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate "https://onlineservices.tin.egov-nsdl.com/etaxnew/tdsnontds.jsp"
Do While IE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop

Set doc = IE.document
doc.parentWindow.execScript "sendRequest(281)", "JavaScript"

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


If ThisWorkbook.Sheets("Challan AutoFill").Range("m2").Value = "Company" 
Then
doc.getElementById("0020").Click
ElseIf ThisWorkbook.Sheets("Challan AutoFill").Range("m2").Value = "Non 
Company" Then
doc.getElementById("0021").Click
End If



If ThisWorkbook.Sheets("Challan AutoFill").Range("o2").Value = "(200) 
TDS/TCS Payable by Taxpayer" Then
doc.getElementById("200").Click
ElseIf ThisWorkbook.Sheets("Challan AutoFill").Range("o2").Value = "(400) 
TDS/TCS Regular Assessment" Then
doc.getElementById("400").Click
End If


IE.document.querySelector("select.form-control").selectedIndex = 
ThisWorkbook.Sheets("Challan AutoFill").Range("r2").Value


doc.getElementById("NetBanking").Click

doc.getElementById("NetBank_Name_c").Value = ThisWorkbook.Sheets("Challan 
AutoFill").Range("t2").Value



End Sub```

Ответы [ 2 ]

3 голосов
/ 14 октября 2019

Вы можете получить входные данные, используя их имена по doc.getElementsByName. Возвращает коллекцию всех элементов в документе с указанным именем. Затем вы должны узнать порядковый номер нужного вам элемента.

enter image description here

Например, вы можете установить значение «Счета налогового вычета №»используя следующий код:

doc.getElementsByName("TAN")(1).Value = "abc"

Для других входов вы можете использовать те же методы. Я делаю тест с настройкой некоторых значений, и вы можете увидеть результат:

enter image description here

0 голосов
/ 14 октября 2019

Вы можете использовать getElementsByTag («input»), который возвращает коллекцию компонентов, к которым вы можете получить доступ с помощью индекса, а затем установить их значение на то, что вам нужно.

doc.getElementsByTagName("input")(0).value = "My value"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...