【问题标题】:VBA Sending the Enter key to an HTMLInputElementVBA 将 Enter 键发送到 HTMLInputElement
【发布时间】:2017-06-23 15:06:08
【问题描述】:

我希望这是一个简单的问题。我有一些代码在其中加载网页并在 IE 的字段中输入一个数字。如下:

Option Explicit

Private Sub GettingCashAvail()

Dim IE          As InternetExplorerMedium
Dim HTMLDoc     As HTMLDocument
Dim IEField     As HTMLInputElement

Set IE = New InternetExplorerMedium

IE.navigate "https://website.com/login.aspx"

While IE.Busy
    DoEvents
Wend

Do Until IE.statusText = "Done"
    DoEvents
Loop

Set HTMLDoc = IE.document

Set IEField = HTMLDoc.getElementById("ucGetAccountNumber_txtAccountNumber")

IEField.Value = "#########"

现在该字段支持按回车键移动到下一页。我可以为提交按钮调暗第二个对象,然后执行 IESubmit.Click 之类的操作以输入信息并导航到新屏幕,但我想做的是以某种方式发送返回键。以下是我感兴趣的网页源代码部分:

onkeypress="return clickButton(event,'ucGetAccountNumber_btnSubmit')"

您认为有什么方法可以简单地发送回车键吗?如果是的话,感谢您的想法,如果不是,我可以将该提交按钮设置为第二个输入对象。

【问题讨论】:

  • call GettingCashAvail?
  • 我也有同样的问题。你能找到这个特定问题的解决方案吗?我需要模仿“tab”或“enter”键盘输入。但是当我使用SendKeys时,它直接进入VBA控制台。

标签: internet-explorer vba automation


【解决方案1】:

你可以使用:

IE.Visible = True
Application.SendKeys "~" '## send the "Enter" keystroke

但在我尝试使用SendKeys 方法时,它们不是很可靠,大多数人会建议使用不同的方法。

我个人认为最好创建另一个对象变量并调用按钮的.Click 方法,如您所指出的。

【讨论】:

  • 没有骰子。我实际上尝试了另一个轻微的变化。我还尝试简单地将 Chr(10) 添加到具有可预测结果的文本字段中 - 没有结果。
  • 你认为有办法使用“FireEvent”方法来实现吗?
  • 从未听说过。为什么不走简单的路线,创建另一个对象变量来表示需要单击的按钮,然后调用.Click 方法?
  • 你已经知道如何解决这个问题了。当 API 本身支持可靠的解决方案时,您正在寻找替代方法。如果SendKeys 不起作用,只需使用.Click。注意:大多数人会告诉你避免使用SendKeys 是有原因的 :)
  • 这就是我的选择。不幸的是,关于 HTML 对象库的文档相当糟糕,或者我无论如何都找不到它。我确实找到了另一种方法,但它涉及 Windows API 和一些创造性的键盘劫持,这给它自己带来了麻烦。我决定继续前进。不过感谢您的帮助和建议。
猜你喜欢
  • 2023-03-26
  • 1970-01-01
  • 2016-11-01
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多