excel VBA尝试从下拉框中抓取HTML选项选定的InnerText

cig3rfwq  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(139)

我是新的VBA,并试图创建一个网页刮刀创建一个报告,从我们的应用程序之一。这是一个供应商创建的环境,但我们拥有数据。我能够导航到网站并拉大我需要的大部分数据;然而,我已经撞上了一堵砖墙,试图拉是否时间是上午或下午。上午或下午是必不可少的,因为我们需要一天24小时的服务,我们得到收费的短通知电话。
HTML代码是:

<td>

<select name="collectionInfoBox:generalInformationBox:agencyNotifiedDate:timeSelector">

<option value="0">AM</option>

<option selected="selected" value="1">PM</option>

</select>

</td>

我的VBA代码是:

set nt = htmlDoc.getElementsByName("collectionInfoBox:generalInformationBox:agencyNotifiedDate:timeSelector")
ws.Cells(1, 7).Value = nt.Item(nt.SelectedIndex).innerText

我发现这个代码是对一个问题的回答,这个问题似乎和我的相似。我得到一个运行时错误'438':对象不支持ws.Cells(1,7).Value行上的此属性或方法。
正如我所说的,我使用VBA才几天,所以任何关于如何实现这一目标的建议都将不胜感激。感谢您的评分

bqf10yzr

bqf10yzr1#

在我的测试中,我不得不使用方法findElementsByName,因为getElementsByName无效?无论如何,如果你将结果的评估更改为= nt.item(1).Value,你将得到零或一。0是AM,1是PM。另外请注意,对象nt是一个列表,它可能有零个或更多的结果。您的规范看起来只会得到一个结果。但为了确保这一点,您应该始终检查nt.count是否为零或更大,并处理该结果。
如果您不知道所选内容的静态文本,也可以执行此操作

Dim vals() As String
vals = Split(nt.Item(1).Text, Chr(10))
ws.Cells(1, 7) = vals(nt.Item(1).Value)

相关问题