使用 Excel VBA 到 select onchange JavaScript web 中的值
Using Excel VBA to select onchange value in JavaScript web
我是 VBA 的新手,我已经尝试过多次使用 Excel VBA 到 select 网站上的值,但它没有工作。下面是我使用的代码。
实际上我不知道如何获取元素,因为它没有 "id" 或 "name" 标签。
Sub GetFinanceData()
Dim URL As String
URL = "http://stock.finance.sina.com.cn/hkstock/finance/00001.html"
Set myIE = CreateObject("InternetExplorer.Application")
With myIE
.navigate URL
.Visible = True
Do While .Busy = True Or .readyState <> 4
Loop
DoEvents
.Document.parentWindow.execScript "selectData(zero);", "JavaScript"
End With
End Sub
下面是HTML代码,我想在打开网站时将选项值更改为"zero",谁能帮忙检查并告知我可以使用什么VBA代码获取值 "zero"?提前致谢!
<a name="a1" id="a1"></a>
<div class="part02">
<div class="sub01">
<div class="sub01_tt fblue">
<span class=" selected"><a href="#a1" target="_self">重要财务指标</a></span>
<span class=""><a href="#a2" target="_self">资产负债表</a></span>
<span class=""><a href="#a3" target="_self">现金流量表</a></span>
<span class=""><a href="#a4" target="_self">综合损益表</a></span>
<em class="rt">报表类型:<select class="fgrey" style="width:100px;" interface="getFinanceStandardForjs?symbol=$symbol&financeStanderd=" table="tableGetFinanceStandard" onchange="selectData(this);">
<option value="all" >全部</option>
<option value="zero" >年报</option>
<option value="1" >中报</option>
<option value="2" >一季报</option>
<option value="3" >三季报</option>
</select></em>
</div>
<div class="sub01_cc">
<div class="sub01_c">
<table cellspacing="0" cellpadding="0" border="0" class="tab05">
<tbody id="tableGetFinanceStandard">
<tr>
确实,通过 HTML name
或 id
来寻址表单元素有时是有利的,但在您的示例中,您可以使用 getElementsByTagName() 方法来处理 select
标签,即使它们没有名称或 ID。
下面的代码会将所有 select
下拉列表设置为 "zero"。我简单测试了一下,效果很好。
Sub GetFinanceData()
Dim URL As String
URL = "http://stock.finance.sina.com.cn/hkstock/finance/00001.html"
Set myIE = CreateObject("InternetExplorer.Application")
With myIE
.navigate URL
.Visible = True
Do While .Busy = True Or .readyState <> 4
Loop
DoEvents
Set selectItems = myIE.document.getElementsByTagName("select")
For Each i In selectItems
i.Value = "zero"
i.FireEvent ("onchange")
Next i
End With
End Sub
CSS select或:
使用 CSS select 或定位 option[value='zero']
也就是说 option
标签具有属性 value
,值为 'zero'
。 "[]"
表示属性。
CSS查询:
VBA:
您应用select或使用document
的querySelector
方法,即
简单地select然后
ie.document.querySelector("option[value='zero']").Selected = True
如果需要触发额外的事件触发:
ie.document.querySelector("option[value='zero']").FireEvent "onchange"
我是 VBA 的新手,我已经尝试过多次使用 Excel VBA 到 select 网站上的值,但它没有工作。下面是我使用的代码。
实际上我不知道如何获取元素,因为它没有 "id" 或 "name" 标签。
Sub GetFinanceData()
Dim URL As String
URL = "http://stock.finance.sina.com.cn/hkstock/finance/00001.html"
Set myIE = CreateObject("InternetExplorer.Application")
With myIE
.navigate URL
.Visible = True
Do While .Busy = True Or .readyState <> 4
Loop
DoEvents
.Document.parentWindow.execScript "selectData(zero);", "JavaScript"
End With
End Sub
下面是HTML代码,我想在打开网站时将选项值更改为"zero",谁能帮忙检查并告知我可以使用什么VBA代码获取值 "zero"?提前致谢!
<a name="a1" id="a1"></a>
<div class="part02">
<div class="sub01">
<div class="sub01_tt fblue">
<span class=" selected"><a href="#a1" target="_self">重要财务指标</a></span>
<span class=""><a href="#a2" target="_self">资产负债表</a></span>
<span class=""><a href="#a3" target="_self">现金流量表</a></span>
<span class=""><a href="#a4" target="_self">综合损益表</a></span>
<em class="rt">报表类型:<select class="fgrey" style="width:100px;" interface="getFinanceStandardForjs?symbol=$symbol&financeStanderd=" table="tableGetFinanceStandard" onchange="selectData(this);">
<option value="all" >全部</option>
<option value="zero" >年报</option>
<option value="1" >中报</option>
<option value="2" >一季报</option>
<option value="3" >三季报</option>
</select></em>
</div>
<div class="sub01_cc">
<div class="sub01_c">
<table cellspacing="0" cellpadding="0" border="0" class="tab05">
<tbody id="tableGetFinanceStandard">
<tr>
确实,通过 HTML name
或 id
来寻址表单元素有时是有利的,但在您的示例中,您可以使用 getElementsByTagName() 方法来处理 select
标签,即使它们没有名称或 ID。
下面的代码会将所有 select
下拉列表设置为 "zero"。我简单测试了一下,效果很好。
Sub GetFinanceData()
Dim URL As String
URL = "http://stock.finance.sina.com.cn/hkstock/finance/00001.html"
Set myIE = CreateObject("InternetExplorer.Application")
With myIE
.navigate URL
.Visible = True
Do While .Busy = True Or .readyState <> 4
Loop
DoEvents
Set selectItems = myIE.document.getElementsByTagName("select")
For Each i In selectItems
i.Value = "zero"
i.FireEvent ("onchange")
Next i
End With
End Sub
CSS select或:
使用 CSS select 或定位 option[value='zero']
也就是说 option
标签具有属性 value
,值为 'zero'
。 "[]"
表示属性。
CSS查询:
VBA:
您应用select或使用document
的querySelector
方法,即
简单地select然后
ie.document.querySelector("option[value='zero']").Selected = True
如果需要触发额外的事件触发:
ie.document.querySelector("option[value='zero']").FireEvent "onchange"