2016-08-08 49 views
-1

Update # 2

ich die Werte des txtbox und submitbtns mit einem (0) verändert (und auch versuchte (1) auch), keine Änderungen.Von den frühen Bindung Umstellung auf späte Bindung

Und ich muss auch beachten, dass der Button einen anderen Namen hat und ich auch hier entsprechend aktualisiert.

Dim TBox As String   'Name of object textbox to have value changed in 
Dim TBtn As String   'Name of object button to be pressed 
    TBox = "masked1" 
    TBtn = "button" 

If Not IE Is Nothing Then 
    Set txtBox = IE.Document.getElementsByClassName(TBox)(0) 
    Set submitBtn = IE.Document.getElementsByClassName(TBtn)(0) 

    txtBox.Value = tVal 
    submitBtn.Click 
End If 

UPDATE # 1

So sieht es vielversprechend mit dem Vorschlag von @cyboashu zur Verfügung gestellt. Allerdings kann ich meine txtbox immer noch nicht auf die (String) aktualisieren.

Dim oShell  As Object 
Dim oWin  As Object 
Dim IE   As Object 
Dim lTotlWin As Long 
Dim lCtr 

Debug.Print Time & " --- IE Objects & Values ---"  ' Debugger Section 
Set oShell = CreateObject("Shell.Application") 
    Debug.Print Time & " [obj ] oShell..: " & oShell ' Debug oShell 
Set oWin = oShell.Windows() 
    Debug.Print Time & " [obj ] oWin....: " & oWin  ' Debug oWin 

lTotlWin = oWin.Count - 1 '/ Starts with zero 
Debug.Print Time & " [long] lTotlWin: " & lTotlWin  ' Debug lTotlWin 

For lCtr = 0 To lTotlWin 
    If UCase(oWin.Item(lCtr).FullName) Like "*IEXPLORE.EXE" Then 
     Set IE = oWin.Item(lCtr) 
    End If 
Next 
Debug.Print Time & " [obj ] IE......: " & IE 
If Not IE Is Nothing Then 
    MsgBox "Found and hooked!!" 
End If 

Dim TBox As String   'In the event the textbox's name changes for some reason 
    TBox = "masked1" 

If Not IE Is Nothing Then 
    Set txtBox = IE.Document.getElementsByClassName(TBox) 
    Debug.Print Time & " [obj ] txtbox..: " & txtbox 
    Set submitBtn = IE.Document.getElementsByClassName(TBox) 
    Debug.Print Time & " [obj ] submitBtn:" & submitBtn 

    txtBox.Value = tVal 
    submitBtn.Click 
End If 

Set shellwins = Nothing 

Debug.Print Time & "- - - END SUB - - -" & E 

End Sub

(Debugger Werte, wenn jemand kümmert sich) ..

2:44:11 PM --- IE Objects & Values --- 
2:44:11 PM [long] lTotlWin: 5 
2:44:11 PM [obj ] IE......: Internet Explorer 
2:44:11 PM - - - END SUB - - - 
+1

Wie sieht Ihre aktuelle (nicht funktionierenden) späte Bindung Code wie folgt aussehen: der Code, den Sie sieht aus wie die frühe Bindung Version geschrieben, so welche Fortschritte gemacht haben Sie bisher? –

+0

@TimWilliams Ich habe meine Frage aktualisiert, um zu zeigen, was ich jetzt habe –

+1

Erhalten Sie die "hooked" messagebox? 'IE.Document.getElementsByClassName (TBox)' gibt eine Sammlung von Knoten zurück (beachten Sie das "s" in Elements), kein einzelnes Element. Sie benötigen etwas wie 'Set txtBox = IE.Document.getElementsByClassName (TBox) (0)', um einen Verweis auf das erste Mitglied dieser Sammlung zu erhalten. –

Antwort

0

Get Objekt wird hier nicht funktionieren.

Was MS sagt über sie: https://support.microsoft.com/en-gb/kb/239470

GetObject Aufruf einer Ausführung von ActiveX-Objekt auf einem Client-System zu erhalten ein großes Sicherheitsrisiko darstellen würde, da jede ausgeführte Objekt auf dem System ohne direkte Benutzer zugegriffen werden kann Erlaubnis, und ist daher nicht vom Internet Explorer erlaubt. Es gibt keine Möglichkeit, dieses Verhalten entweder durch Code oder manuell durch einen Endbenutzer zu ändern .

Versuchen Sie folgendes:

Sub testIELateBinding() 

    Dim oShell    As Object 
    Dim oWin    As Object 
    Dim IE     As Object 
    Dim lTotlWin   As Long 
    Dim lCtr 


    Set oShell = CreateObject("Shell.Application") 
    Set oWin = oShell.Windows() 

    lTotlWin = oWin.Count - 1 '/ Starts with zero 

    For lCtr = 0 To lTotlWin 
     If UCase(oWin.Item(lCtr).FullName) Like "*IEXPLORE.EXE" Then 
      Set IE = oWin.Item(lCtr) 
     End If 
    Next 


    If Not IE Is Nothing Then 
     MsgBox "Found and hooked!!" 
    End If 


End Sub 
+1

Das scheint zu GetObject * aus IE * aufrufen. Ich glaube nicht, dass das hier der Fall ist –

+0

Als ich GetObject auf meiner Seite getestet habe, bekam ich die Fehlermeldung, dass ActiveX-Objekt nicht erstellt werden kann, also dachte ich, es macht Sinn. ActiveX-Initialisierung wird blockiert. Aber man kann nie wissen :) – cyboashu

+0

@cyboashu Debugger Werte '2:25:25 PM [lang] lTotlWin: 5' &' 2:25:25 PM [obj] IE ......: Internet Explorer'. Ich habe Ihre msgbox-Eingabeaufforderung erhalten, dass es süchtig war, aber es aktualisiert meine Objekte nicht 'Setzen Sie txtBox = IE.Document.getElementsByClassName (TBox)' w/'txtBox.Value = Phn' –