2017-08-03 7 views
1

Ich habe es mit einem Webformular-Textfeld zu tun, das eine Suche nach seinem Inhalt startet, wenn "Enter" gedrückt wird. Ich weiß, wie man alle anderen Event-Listener einleitet, aber ich kann nicht das "Enter" -Ereignis der Presse zum Auslösen bringen. Es ist nicht mit den anderen gängigen aufgeführt. d. h. onchange, onclick, onblurProgrammgesteuertes Drücken der Eingabetaste auf IE mit Excel VBA-Automatisierung "Drücken Sie die Eingabetaste"

Derzeit verwende ich das CreateObject ("Shell.Application") als übergeordnetes Objekt in Excel VBA, um einen vorhandenen IE-Browser zu steuern.

Ich habe auch sendkeys versucht, habe aber Probleme mit was VBA konzentriert. Es gibt meine IDE oder die Tabelle selbst ein.

Es ist keine öffentliche Website. Es ist ein Eingabe-Tag mit Events (Unschärfe, Veränderung, Fokus, Keydown, Mouse-Down, Mausbewegung).

With Tex_Box 
     .focus 
     .keydown 
     .innertext = Field_Text 
     .change 
     .focus 
     .blur 
    End With 

Jede Hilfe wäre großartig! Vielen Dank im Voraus.

+0

Es ist eine interessante Frage, aber einige mehr Code (vorzugsweise genug, um es ein [MCVE]) würde helfen. –

+0

Sorry, ich kenne keine andere Seite, die öffentlich ist, mit einem Beispiel. –

+0

Jetzt suchen. Scheint, dass "Press Enter to Search" eine knopflose Methode ist, ein Ereignis zu initiieren. –

Antwort

0

So stackoverflow.com/questions/11655591/... geht darüber, wie Sie den Internet Explorer konzentrieren, bevor Sendkeys verwendet werden. Dies war jedoch nur ein Teil des Puzzles, ich musste immer noch auf das Textfeld fokussieren und dann Enter drücken. Da ich nicht wissen konnte, wie viele Registerkarten das richtige Feld finden würde, habe ich einfach eine Schleife erstellt, um weiterzumachen, bis die Teilzeichenfolge "focus" im Klassennamen des Textfelds war. Sobald das passiert, habe ich es 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 
Verwandte Themen