2013-03-06 28 views
5

Mam problem z wprowadzeniem tekstu w polu wyszukiwania, gdy po tym, co myślę, że jest tagiem correcet jest. Dostałem identyfikator z kodu źródłowego strony. Zrobiłem to już wcześniej na innych stronach internetowych. Czy ktoś mógłby mi pomóc? Czy jest inny sposób na zrobienie tego?VBA - IE GetElementByID nie działa

Sub FileUpload() 

Dim IEexp as Object 
IEexp.visible = True 
IEexp.Navigate ("www.example.com") 

'this is where the problem 
IEexp.Document.GetElementByID("step1_id_bean_newSupportingDoc_description").Value _ 
= "monthly update" 

End Sub 

dostaję "Automation Error Wywołany obiekt odłączył się od swoich klientów"

Source Code, gdzie wyciągnął ID z:

<td class="Label">Description</td> 
    <td class="Data"><input type="text" name="bean.newSupportingDoc.description" size="60" maxlength="250" value="" id="step1_id_bean_newSupportingDoc_description" class="NoBorder"/> 
</td> 
+2

Czy czekasz na załadowanie dokumentu przed próbą uzyskania dostępu do elementu wejściowego? –

+0

Uruchomiłem to lokalnie i czekałem na zdarzenie ładowania strony i otrzymuję błąd iwebbrowser2 – user1902540

+0

Tak, uruchomiłem go w trybie przerwania, więc czekam, aż strona całkowicie się załaduje i nadal otrzymuję ten błąd. –

Odpowiedz

0

Można spróbować

Do Until IEexp.readyState = 4 
DoEvents 
Loop 



IEexp.Document.getElementById("username").Value = "Monthly update" 


IEexp.Document.getElementById("password").Value = FilePth 
0

Kod działa. Co z "trybem ochrony"? Zobacz ten artykuł: http://www.sevenforums.com/tutorials/63141-internet-explorer-protected-mode-turn-off.html. Jeśli przeglądarka IE działa w trybie ochrony, spróbuj ją wyłączyć i ponownie uruchom kod.

' Add References: 
' - Microsoft HTML Object Library 
' - Microsoft Internet Controls 

Sub FileUpload() 

    Dim IEexp As InternetExplorer 
    Set IEexp = New InternetExplorer 
    IEexp.Visible = True 
    IEexp.navigate "www.example.com" 

    Do While IEexp.readyState <> 4: DoEvents: Loop 

    Dim inputElement As HTMLInputElement 
    Set inputElement = IEexp.Document.getElementById("step1_id_bean_newSupportingDoc_description") 

    If (Not inputElement Is Nothing) Then 
     inputElement.Value = "monthly update" 
    Else 
     MsgBox "Input element not found on web page." 
    End If 

    IEexp.Quit 
    Set IEexp = Nothing 
End Sub 
1

Jeśli używasz Set IEexp = New InternetExplorerMedium, nie musisz zmieniać ustawień w opcjach internetowych. Automatycznie tworzy instancję obiektu IE z ustawieniami aplikacji średniej integralności.