使用 VBA 在 IE 中选择下拉列表
Selecting Dropdown list in IE with VBA
我一直在尝试使用 VBA 在网页中 select 下拉列表,这是我的新手。在 HTML 中,下拉菜单表示为 Button 而不是 Select。这是 HTML 代码:
<span class='btn-group'>
<button id='str_listing-btn' name='str_listing-btn' type='button' class='btn btn-default dropdown-toggle' data-toggle='dropdown' data-value='For Sale'>
For Sale
<span class='caret' style='margin-left:5px;'>
</span>
</button>
<ul class='dropdown-menu wptk_crud_dropdown' id='str_listing' data-value='str_listing' role='menu'>
<li>
<a href='#' data-value='For Sale'>For Sale</a>
</li>
<li>
<a href='#' data-value='For Rent'>For Rent</a>
</li>
<li>
<a href='#' data-value='Wanted To Buy'>Wanted To Buy</a>
</li>
<li>
<a href='#' data-value='Wanted To Rent'>Wanted To Rent</a>
</li>
</ul>
</span>
我已经尝试了几个 VBA 代码来 select 其中一个选项。以下是我使用的最新代码,但在 运行 之后,下拉菜单似乎没有任何变化:
Private Sub InsertPropwall_Click()
Dim objIE1 As Object
objIE1.navigate ("http://www.propwall.my/classifieds/post_ad?action=add")
Do
DoEvents
Loop Until objIE1.ReadyState = 4
objIE1.Document.getElementById("str_listing-btn").Value = "For Rent"
Do
DoEvents
Loop Until objIE1.ReadyState = 4
End Sub
下拉菜单不是下拉菜单(如您所述)。相反,它是一个无序列表,其中包含许多 link 作为可点击选项。也就是说,For Rent
选项不包含在 str_listing-btn
中。请注意在任何选项可用之前该标记是如何关闭的。相反,它包含在它下面的列表中。
由于我无法在不创建帐户的情况下进入您的 link,因此我测试了 select 主页上 For Rent
选项的代码。查看我的代码,测试它是否满足您的需求,然后尝试将其融入您的代码中。如果您需要其他帮助,请告诉我们。
Sub NavigateIt()
Dim oIE As Object
Set oIE = CreateObject("InternetExplorer.Application")
oIE.navigate ("http://www.propwall.my/classifieds")
oIE.Visible = True
Do
DoEvents
Loop Until oIE.ReadyState = 4
Set AvailableLinks = oIE.document.getelementbyid("list-listing").getelementsbytagname("a")
For Each cLink In AvailableLinks
If cLink.innerhtml = "For Rent" Then
cLink.Click
End If
Next cLink
End Sub
CSS 选择器:
您可以使用 CSS 选择器,例如
a[data-value=For Sale] or a[data-value=For Rent]
这表示带有 a
标签的第一个元素具有属性 data-value
,其值为 'For Sale'
;或者,在后续示例中 'For Rent'
。
CSS查询:
VBA:
您使用 document
的 querySelector 方法应用 CSS 选择器
objIE1.Document.querySelector("a[data-value=For Sale]").Click
我一直在尝试使用 VBA 在网页中 select 下拉列表,这是我的新手。在 HTML 中,下拉菜单表示为 Button 而不是 Select。这是 HTML 代码:
<span class='btn-group'>
<button id='str_listing-btn' name='str_listing-btn' type='button' class='btn btn-default dropdown-toggle' data-toggle='dropdown' data-value='For Sale'>
For Sale
<span class='caret' style='margin-left:5px;'>
</span>
</button>
<ul class='dropdown-menu wptk_crud_dropdown' id='str_listing' data-value='str_listing' role='menu'>
<li>
<a href='#' data-value='For Sale'>For Sale</a>
</li>
<li>
<a href='#' data-value='For Rent'>For Rent</a>
</li>
<li>
<a href='#' data-value='Wanted To Buy'>Wanted To Buy</a>
</li>
<li>
<a href='#' data-value='Wanted To Rent'>Wanted To Rent</a>
</li>
</ul>
</span>
我已经尝试了几个 VBA 代码来 select 其中一个选项。以下是我使用的最新代码,但在 运行 之后,下拉菜单似乎没有任何变化:
Private Sub InsertPropwall_Click()
Dim objIE1 As Object
objIE1.navigate ("http://www.propwall.my/classifieds/post_ad?action=add")
Do
DoEvents
Loop Until objIE1.ReadyState = 4
objIE1.Document.getElementById("str_listing-btn").Value = "For Rent"
Do
DoEvents
Loop Until objIE1.ReadyState = 4
End Sub
下拉菜单不是下拉菜单(如您所述)。相反,它是一个无序列表,其中包含许多 link 作为可点击选项。也就是说,For Rent
选项不包含在 str_listing-btn
中。请注意在任何选项可用之前该标记是如何关闭的。相反,它包含在它下面的列表中。
由于我无法在不创建帐户的情况下进入您的 link,因此我测试了 select 主页上 For Rent
选项的代码。查看我的代码,测试它是否满足您的需求,然后尝试将其融入您的代码中。如果您需要其他帮助,请告诉我们。
Sub NavigateIt()
Dim oIE As Object
Set oIE = CreateObject("InternetExplorer.Application")
oIE.navigate ("http://www.propwall.my/classifieds")
oIE.Visible = True
Do
DoEvents
Loop Until oIE.ReadyState = 4
Set AvailableLinks = oIE.document.getelementbyid("list-listing").getelementsbytagname("a")
For Each cLink In AvailableLinks
If cLink.innerhtml = "For Rent" Then
cLink.Click
End If
Next cLink
End Sub
CSS 选择器:
您可以使用 CSS 选择器,例如
a[data-value=For Sale] or a[data-value=For Rent]
这表示带有 a
标签的第一个元素具有属性 data-value
,其值为 'For Sale'
;或者,在后续示例中 'For Rent'
。
CSS查询:
VBA:
您使用 document
的 querySelector 方法应用 CSS 选择器objIE1.Document.querySelector("a[data-value=For Sale]").Click