使用Excel宏在IE上自动填写表单:
我试图从下拉列表中选择一个值(让它称之为DP1),具体取决于此处选择的值(例如,DP1有8个选项并选择第5个选项),将获取数据以进一步下拉形式。
一般行为(当我们使用鼠标点击选择一个值时):
写一个宏来模拟DP1值的选择。
预期结果:与一般行为相同
实际结果:
根据HTML代码显示DP1的详细信息:
<select name="name1" Class="tb1" id ="DP1" onchange="javascript:getvalues1()" size="1">
<option value="0">----Select-------</option>
<option value="15300">C1</option>
<option value="15301">C2</option>
<option value="15302">C3</option>
<option value="15303">C4</option>
<option value="15304">C5</option>
<option value="15304">C6</option>
<option value="15305">C7</option>
</select>
我尝试的所有可能的事情:
1.我尝试更改Drop down的值。这没用。
set selectobjects = ObjIE.document.getElementsByTagName(select)
For Each Selectele In selectobjects
If Selectele.name = "name1" Then
OptionCount = 0
For Each Optvalue In Selectele
OptionCount = Optioncount + 1
If optioncount = 5 then
Optvalue.Selected = True
End If
Next
Exit For
End If
Next
2.想要使用Sendkeys点击它=它不起作用。
3.Tried将焦点锁定在元素上并按空格键/左键单击使用发送键,并使用正确的等待时间=不起作用
4.尝试使用Keybd_event并在将焦点固定在元素上后模拟单击向下箭头=不起作用。
Private Declare Sub keybd_event Lib "User32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfor As Long)
Private Const VK_DOWN = &H28
Private Const KEYEVENTIF_KEYUP = &H2
Call keybd_event(VK_DOWN, 0,0,0) 'Press down arrow
DoEvents
Application.WAIT Now+TimeValue("00:00:03") ' application will wait for 3 seconds
Call keybd_event(VK_DOWN,0,KEYEVENTIF_KEYUP,o) 'Release down arrow
DoEvents
Application.WAIT Now+TimeValue("00:00:03") ' application will wait for 3 seconds
仅供参考:我使用了所有这些点击和选择多次的方法,并且它们运行良好。但是,只有在这种情况下,我才被击中。
有些人可以解释为什么当我尝试自动化过程(下拉选择)时这不起作用,当我点击使用鼠标时这同样有效吗?在此先感谢!!
如果需要进一步的信息,请告诉我们!
答案 0 :(得分:0)
它应该是这样的。
Sub passValueToComboBox1()
Dim ie As Object
Dim oHTML_Element As IHTMLElement
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "http://your_URL_here.php"
While ie.Busy Or ie.readyState <> 4: DoEvents: Wend
Set oHTML_Element = ie.document.getElementsByName("selectedReportClass")(0)
If Not oHTML_Element Is Nothing Then oHTML_Element.Value = "FUBU7"
For Each oHTML_Element In ie.document.getElementsByTagName("input")
If oHTML_Element.Type = "submit" Then oHTML_Element.Click: Exit For
Next
End Sub
最简单的方法是点击键盘上的F12,这样你就可以看到页面背后的HTML。按名称标识ComboBox(当您将鼠标悬停在HTML代码上时将突出显示)或ID(0,1,2等)。然后,只需将值直接传递给ComboBox。
试一试,看看它是怎么回事。
最后,如果F12没有做任何事情,请下载并安装IE工具栏。
https://www.microsoft.com/en-us/download/details.aspx?id=32987