使用Excel VBA来更改网站上的下拉菜单中的价值(Using excel vba to chan

2019-07-20 07:28发布

我写一个Excel宏来填写表格在网站上。 我写了填充文本框容易够代码,发现代码来选择单选框,但我有选择从下拉菜单信息的问题。

实施例“性别”:

组合框有三个选项:

 Select / Male / Female 

我试着在这几个变化:

 doc.getElementsByName("xs_r_gender").Item(0).Value="Male" 

...但没有运气。

这是网络的源代码:

<td> <select name="xs_r_gender" id="xs_r_gender">
<option value="" selected>Select</option>
<option value="male">Male</option>
<option value="female">Female</option> </select></td>

谢谢。

Answer 1:

doc.getElementById("xs_r_gender").selectedindex=1
似乎这样的伎俩。 (其中1表示男性)

虽然这意味着我需要做很多的查找,以确定哪些值是在我的下拉列表中的项目。 (易够性别,那里只有两个选择,但我有一些组合框多达50选项)。 如果任何人更快的解决方案的人都知道,那简直太好了。 在此期间,伊利诺伊州开始做了一些表!

谢谢。



Answer 2:

尝试下面的代码假定文档= ie.document

doc.getElementById("xs_r_gender").value = "Male"


Answer 3:

使用这个在你的代码中调用下面的函数。

xOffset = SetSelect(IE.Document.all.Item("shipToStateValue"), "Texas")
doc.getElementById("shipToStateValue").selectedindex = xOffset

然后用这个你的函数

Function SetSelect(xComboName, xComboValue) As Integer
    'Finds an option in a combobox and selects it.

    Dim x As Integer

    For x = 0 To xComboName.options.Length - 1
        If xComboName.options(x).Text = xComboValue Then
            xComboName.selectedindex = x
            Exit For
        End If
    Next x

    SetSelect = x

End Function


Answer 4:

由于协议栈,对我的作品! 我的解决方案,以降低操作的IE HTML组合框下拉竟然是两个部分。

第1部分是点击下拉,这里的代码:

Dim eUOM1 As MSHTML.HTMLHtmlElement
Set eUOM1 = ie.document.getElementsByTagName("input")(27).NextSibling
eUOM1.Focus
eUOM1.Click

第2部分是选择和点击的价值,像这样(*实际的元素名称变更):

Dim eUOM2 As MSHTML.HTMLHtmlElement
Set eUOM2 = ie.document.getElementsByName("[*PutNameHere]")(0)
eUOM2.Value = "EA"
eUOM2.Click

下面是引用: 裁判



Answer 5:

你可以尝试querySelector的方法document应用的CSS选择器option与属性标记value = 'male'

doc.querySelector("option[value='male']").Click

要么

doc.querySelector("option[value='male']").Selected = True


Answer 6:

Function SetSelect(s, val) As Boolean

'Selects an item (val) from a combobox (s)
'Usage:
'If Not SetSelect(IE.Document.all.Item("tspan"), "Custom") Then
'something went wrong
'Else
'continue...
'End If

Dim x As Integer
Dim r As Boolean
r = False
For x = 0 To s.Options.Length - 1
If s.Options(x).Text = val Then
s.selectedIndex = x
r = True
Exit For
End If
Next x

SetSelect = r
End Function


Answer 7:

试试这个代码:

doc.getElementById("xs_r_gender").value = "Male"
doc.getElementById("xs_r_gender").FireEvent("onchange")


Answer 8:

你可以这样做:

doc.getElementsByName("xs_r_gender").Item(1).Selected=True

要么

doc.getElementById("xs_r_gender").selectedindex = 1

其中,1是男性选项(在这两种情况下)。

如果Dropbox的需求,以aknowledge您选择到必须解雇一些事件,很可能这将是“的onchange”事件。 您可以启动它,如下所示:

doc.getElementById("xs_r_gender").FireEvent("onchange")

如果你希望能够选择基于期权的文字,你可以使用Lansman(给定功能的选项这里 )。 基于相同的答案,如果你要拨打的选项,通过它的价值属性(而不是文本,你可以改变线路If xComboName.Options(x).Text = xComboValue ThenIf xComboName.Options(x).value = xComboValue Then )。

这应涵盖所有基地。



Answer 9:

从这里到最后一行复制:

Sub Filldata()

Set objShell = CreateObject("Shell.Application")

IE_count = objShell.Windows.Count

For X = 0 To (IE_count - 1)

On Error Resume Next    ' sometimes more web pages are counted than are open

my_url = objShell.Windows(X).document.Location

my_title = objShell.Windows(X).document.Title

   If my_title Like "***Write your page name***" Then

    Set IE = objShell.Windows(X)

        Exit For

    Else

        End If

    Next

With IE.document.forms("***write your form name***")

' Assuming you r picking values from MS Excel Sheet1 cell A2

i=sheet1.range("A2").value 

.all("xs_r_gender").Item(i).Selected = True

End with

End sub


文章来源: Using excel vba to change the value of a dropdown menu on a website