Я не фанат sendkeys, но работает следующее
Option Explicit
'VBE > Tools > References:
' Microsoft Internet Controls
Public Sub GetData()
Dim ie As New InternetExplorer
With ie
.Visible = True
.Navigate2 "https://www.bseindia.com/corporates/List_Scrips.aspx#"
While .Busy Or .readyState < 4: DoEvents: Wend
With .document
'status
.querySelector("[value='Active']").Selected = True 'Suspended,Delisted,Select
'group
.querySelector("[value='Select']").Selected = True ' "B ", "C " etc
'industry
.querySelector("[value='Advertising & Media']").Selected = True 'Agrochemicals etc
'segment
.querySelector("#ContentPlaceHolder1_ddSegment [value='Equity']").Selected = True
'Submit
.querySelector("#ContentPlaceHolder1_btnSubmit").Click
Const MAX_WAIT_SEC As Long = 5
Dim t As Date
While ie.Busy Or ie.readyState < 4: DoEvents: Wend
Dim download As Object
t = Timer
Do
On Error Resume Next
Set download = .querySelector("#ContentPlaceHolder1_lnkDownload")
On Error GoTo 0
If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While download Is Nothing
If Not download Is Nothing Then
download.Click
End If
Application.Wait Now + TimeSerial(0, 0, 10)
Application.SendKeys "%N", True
Application.SendKeys "%S", True
Application.Wait Now + TimeSerial(0, 0, 10)
Application.SendKeys "%O", True
End With
Stop
.Quit
End With
End Sub
С селеном все намного проще, хотя вам нужно изменить расширение загруженного файла с .tmp
до .csv
.После установки selenium basic обязательно зайдите в VBE> Инструменты> Ссылки и добавьте ссылку на Microsoft Scripting Runtime.
Option Explicit
Public Sub MakeSelections()
Dim d As WebDriver
Set d = New ChromeDriver
Const URL = "https://www.bseindia.com/corporates/List_Scrips.aspx#"
With d
.Start "Chrome"
.get URL
'status
.FindElementByCss("#ContentPlaceHolder1_ddlStatus").AsSelect.SelectByText "Suspended"
'group
.FindElementByCss("#ContentPlaceHolder1_ddlGroup").AsSelect.SelectByText "Select" ' "B ", "C " etc
'industry
.FindElementByCss("#ContentPlaceHolder1_ddlIndustry").AsSelect.SelectByText "Agrochemicals" 'Agrochemicals etc
'segment
.FindElementByCss("#ContentPlaceHolder1_ddSegment").AsSelect.SelectByText "Equity"
.FindElementByCss("#ContentPlaceHolder1_btnSubmit").Click
.FindElementByCss("#ContentPlaceHolder1_lnkDownload").Click
.Quit
End With
End Sub