Sendkey(" {ENTER}")在自动化Internet Explorer

时间:2015-06-16 08:08:52

标签: excel vba internet-explorer sendkeys

Sendkey ("{ENTER}")未将数据从excel输入网站

我需要使用它,因为表单没有单击按钮

Sub FillInternetForm()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate "http://reference.medscape.com/drug-interactionchecker"
IE.Visible = True
While IE.Busy
DoEvents
Wend

Set TrackID = IE.Document.getelementbyid("MDICtextbox")
TrackID.Value = "Aspirin"
IE.Visible = True
SendKeys ("{ENTER}") 

End Sub

请注意,如果我将Enter更改为其他命令,例如{BS}或Backspace,则可以使用但不能输入

3 个答案:

答案 0 :(得分:0)

您是否尝试〜(代字号),因为此页面建议:

SendKeys

答案 1 :(得分:0)

根据经验,如果您使用的是SendKeys,那么您做错了。

SendKeys是一个非常脆弱的功能,通常还有其他“程序化”方法

我的建议:使用Page的javascript

我为你分析了http://reference.medscape.com/drug-interactionchecker

事实证明,handleKeyDown函数绑定到onkeydown事件,

您可以通过直接调用

来简单地模拟{ENTER}
handleKeyDown({which:13,preventDefault:function(){}});

(您可以通过在浏览器的控制台中输入来验证它是否有效)

您可以使用以下命令从vba调用该函数:

IE.Document.parentwindow.execscript "handleKeyDown({which:13,preventDefault:function(){}});"

答案 2 :(得分:0)

Sub FillInternetForm()

将IE视为对象

设置IE = CreateObject(" InternetExplorer.Application")

IE.Navigate" http://reference.medscape.com/drug-interactionchecker"

IE.Visible = True

虽然IE.Busy

的DoEvents

WEND

设置TrackID = IE.Document.getelementbyid(" MDICtextbox")

TrackID.Value ="阿司匹林"

IE.Visible = True

' Application.SendKeys(" {ENTER}")

IE.Document.parentwindow.execscript" handleKeyDown({which:13,preventDefault:function(){}});"

End Sub