自动化 Internet Explorer 时,Sendkey(“{ENTER}”)不起作用

问题描述 投票:0回答:3

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,它可以工作,但不能 Enter

excel vba internet-explorer sendkeys
3个回答
0
投票

您是否尝试过 ~(波形符),正如本页建议的那样:

发送密钥


0
投票

Sub FillInternetForm()

将 IE 作为对象变暗

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

IE.导航“http://reference.medscape.com/drug-interactionchecker

IE.Visible = True

当 IE.Busy 时

做活动

温德

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

TrackID.Value =“阿司匹林”

IE.Visible = True

'Application.SendKeys(“{ENTER}”)

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

结束子


0
投票

根据经验,如果您使用

SendKeys
,那么您就做错了。

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

我的建议:使用页面的 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(){}});"
© www.soinside.com 2019 - 2024. All rights reserved.