Следующий макрос excel vba откроет веб-страницу и вставляет «500010» в текстовое поле. Если вы вручную вводите один и тот же номер в текстовое поле, появится раскрывающийся список с последующими выборами. Это не происходит при вводе программного номера. Я пробовал несколько способов программно получить этот раскрывающийся список, чтобы показать, некоторые из них показаны в моем коде, но безрезультатно.Получить раскрывающийся список из TextBox
Sub test()
URL = "http://www.bseindia.com/markets/equity/EQReports/StockPrcHistori.aspx?expandable=7&flag=0"
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate URL
Do Until (ie.readyState = 4 And Not ie.Busy)
DoEvents
Loop
ie.Document.getElementById("ctl00_ContentPlaceHolder1_GetQuote1_txtscrip_code").Value = 500010
' click the textbox to get the dropdown box to appear
ie.Document.getElementById("ctl00_ContentPlaceHolder1_GetQuote1_txtscrip_code").fireevent ("onClick")
ie.Document.getElementById("ctl00_ContentPlaceHolder1_GetQuote1_txtscrip_code").Click
end sub
Если я смотрю на исходный код для веб-страницы, я вижу следующее до информации о текстовом поле.
<script type="text/javascript">
function cleartext1(a) {
if (a.value == "Scrip code/Scrip Name")
a.value = '';
}
function Filltext1() {
a.value == "Scrip code/Scrip Name"
}
function ClearTextBox(a)
{
if (a.value == a.defaultValue) a.value = "";
}
function FillTextBox(a)
{
if (a.value == "") a.value = a.defaultValue;
}
function HiddenValue(hdn) {
var hvalue = document.getElementById(hdn).value;
if (hvalue != "")
{
var s1=hvalue.split("|");
location.href = "/StockReach/AdvanceStockReach.aspx?scripcode=" + s1[0];
return true;
}
else
return false;
}
// function chk(e)
// {
// if(window.event)
// {
// var key=window.event.keyCode;
// if (key == 13)
// {
// var btn = document.getElementById('btnGetQuote');
// // HiddenValue('hdnIdAsset');
//
// btn.click();
// //btn.focus();
// }
// }
// }
</script>
<div id="ctl00_ContentPlaceHolder1_GetQuote1_Pn1" onkeypress="return noenter(event);">
<table border="0" cellspacing="0" cellpadding="2" align="left">
<tr>
<td style ="padding-right:10px;">
<input value="" id="divshow" type="hidden" />
<input value="" id="hdnIdAsset" type="hidden" /><input name="ctl00$ContentPlaceHolder1$GetQuote1$hdnValue" type="hidden" id="ctl00_ContentPlaceHolder1_GetQuote1_hdnValue" />
<input name="ctl00$ContentPlaceHolder1$GetQuote1$txtscrip_code" type="text" maxlength="500" id="ctl00_ContentPlaceHolder1_GetQuote1_txtscrip_code" value="Scrip code/Scrip Name" class="textbox2" onclick="javascript:selecttxt(this);" onkeypress="javascript:noenter(event);return chkkey(event,this);" onfocus="cleartext1(this);" onblur="FillTextBox(this)" onkeyup="javascript:showDivSelect(event,'Asset','http://www.bseindia.com/common/backpageAsset.aspx',this,this.value,3,'0',false);" style="width:160px;" />
Я не очень хорошо знаком с написанием JavaScript функции для VBA, но я попытался положить следующий в моем макросе, но он создал ошибку.
е = "функция (hiddenvalue) 'http://www.bseindia.com/markets/equity/EQReports/StockPrcHistori.aspx?/StockReach/AdvanceStockReach.aspx?scripcode=500010') .value = 'True';}" ie.Document.parentWindow.execScript е, "JScript" ie.Document.getElementById ("ctl00_ContentPlaceHolder1_GetQuote1_txtscrip_code") Нажмите.
Я нахожусь на правильном пути, является функцией javascript в моем коде, что нужно здесь? Может ли кто-нибудь помочь мне придумать код, чтобы отобразить раскрывающийся список? .. TIA, Ron
То, что вы ищете, похоже на поведение поля со списком, которое не существует на веб-страницах. Эти поведения «подделаны» через пользовательский код или библиотеку. Обычно то, что вы увидите в раскрывающемся списке, это div, содержащий пробелы, или ul, содержащие li. Посмотрите на автозаполнение JQuery-UI для нескольких простых решений. – MaKR
Спасибо, но когда я обыскал «JQuery-UI autocomplete, vba», не было хитов – ron