利用excelvba在JavaScript网页中选择onchange值
我对VBA非常陌生,我曾多次尝试使用Excel VBA在网站上选择值,但都不起作用。下面是我使用的代码 实际上,我不知道如何获取元素,因为它没有“id”或“name”标记利用excelvba在JavaScript网页中选择onchange值,javascript,excel,vba,web,onchange,Javascript,Excel,Vba,Web,Onchange,我对VBA非常陌生,我曾多次尝试使用Excel VBA在网站上选择值,但都不起作用。下面是我使用的代码 实际上,我不知道如何获取元素,因为它没有“id”或“name”标记 Sub-GetFinanceData() 将URL设置为字符串 URL=”http://stock.finance.sina.com.cn/hkstock/finance/00001.html" 设置myIE=CreateObject(“InternetExplorer.Application”) 和myIE在一起 .浏览网
Sub-GetFinanceData()
将URL设置为字符串
URL=”http://stock.finance.sina.com.cn/hkstock/finance/00001.html"
设置myIE=CreateObject(“InternetExplorer.Application”)
和myIE在一起
.浏览网址
.Visible=True
Do While.Busy=True或.readyState 4
环
多芬特
.Document.parentWindow.execScript“selectData(零);”,“JavaScript”
以
End Sub
事实上,通过HTML名称或id
对表单元素进行寻址有时是有利的,但在您的示例中,您可以使用getElementsByTagName()方法来寻址选择
标记,即使它们没有名称或id
下面的代码将所有选择下拉列表设置为“零”。我做了短暂的测试,效果很好
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
Sub-GetFinanceData()
将URL设置为字符串
URL=”http://stock.finance.sina.com.cn/hkstock/finance/00001.html"
设置myIE=CreateObject(“InternetExplorer.Application”)
和myIE在一起
.浏览网址
.Visible=True
Do While.Busy=True或.readyState 4
环
多芬特
设置selectItems=myIE.document.getElementsByTagName(“选择”)
对于selectItems中的每个i
i、 Value=“零”
i、 FireEvent(“onchange”)
接下来我
以
端接头
CSS选择器:
使用CSS选择器定位选项[value='zero']
也就是说,选项
标记具有属性值
,值为“零”
<代码>“[]”
表示属性
CSS查询:
VBA:
使用querySelector
方法document
应用选择器,即
然后简单地选择
ie.document.querySelector("option[value='zero']").Selected = True
如果需要触发其他事件触发:
ie.document.querySelector("option[value='zero']").FireEvent "onchange"
您好,谢谢您的快速响应,选择框中的单元格值已更改为零,但我发现表中的数据没有随之更改,这是由于“单击操作”之类的原因吗?请帮我查一下好吗?我不能发布屏幕截图,因为我在这个论坛上没有足够的声誉。嘿。说得好。设置“零”值后,需要向代码中添加i.firevent(“onchange”)
。我已在解决方案中对其进行了更新。现在数字也在更新。对你有用吗?哇,太好了,有用了!你真是个天才,伙计~太酷了!我真的很佩服你,哈哈,我已经为此奋斗了几天,好吧,下一步我应该开始研究如何将这些数据提取到excel。这里有没有选择您的答案作为最佳答案的按钮?我很乐意。在我的答案的第一段左边应该有一个“检查”符号,点击它,答案将被标记为选中。谢谢对于您的下一个挑战,请先阅读HTML代码,我认为在数据表的标记中有一些id
s。您好,我发现下载到excel中的数据没有完全更改,我认为这是因为我在单击按钮和开始下载之间使用了此“Do While.Busy:DoEvents:Loop”代码。你能告诉我这是否会影响网站的正常运行吗?