我正在处理一个网络表单文本字段,当按下“Enter”时,它将启动对其内容的搜索。
我知道如何启动所有其他事件侦听器,但我无法按下“Enter”事件来触发。它未与其他事件一起列出。即onchange,onclick,onblur
我使用CreateObject(“Shell.Application”)作为Excel VBA中的父对象来控制现有的IE浏览器。
我尝试过sendkeys但是在VBA关注的问题上遇到了麻烦。它在我的IDE或电子表格中输入。
它不是公共网站。它是一个包含事件的输入标签(模糊,变化,焦点,keydown,mousedown,mousemove)。
With Tex_Box
.focus
.keydown
.innertext = Field_Text
.change
.focus
.blur
End With
答案 0 :(得分:0)
所以我发现stackoverflow.com/questions/11655591 / ...描述了在使用Sendkeys之前如何为Internet Explorer提供焦点。然而,"怎么"仅仅是谜题的一部分,另一部分是发现"什么"在程序调用sendkey"〜"(回车)之前需要关注。由于未知数量的sendkey" {TAB}"将光标放在所需的字段上,我创建了一个循环,它将连续遍历所有文本字段,直到部分字符串"焦点"存在于所需文本框的名为classname的属性中。一旦发生这种情况,程序就会有一个标记让它知道调用sendkey"〜。"
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function SetForegroundWindow Lib "user32" (ByVal HWND As Long) As Long
Dim HWNDSrc As Long
text_again:
With DOCK_Tex_Box
.focus
.keydown
.innertext = Field_Text
.change
Sleep (500)
.focus
.blur
HWNDSrc = IE.HWND
For i = 1 To 100
DoEvents
SetForegroundWindow HWNDSrc
DoEvents
Application.SendKeys ("{TAB}"), True
DoEvents
Sleep 1000
If InStr(.classname, "prompt") > 0 Then 'If the for loop goes to quickly the field loses focus and then the text clears out.
DoEvents
Sleep 500
GoTo text_again:
End If
If InStr(.classname, "focus") > 0 Then 'Text field has focus
Sleep 1000
Exit For
End If
Next
End With
Application.SendKeys ("~"), True
DoEvents
Sleep 500