2016-04-05 11 views
1

VBA ve Internet Explorer kullanarak bir web sitesinde oturum açmak için çalışıyorum. Bu bir Run TIme hatası 424 "Object Required" neden oluyor.Çalışma zamanı hatası 424 Nesne gerekli - VBA + Internet Explorer = Web Giriş

İşte kodum. Uzman tavsiyelerinizi arıyorum.

Sub Website() 

    Dim IE As Object, Doc As Object, UserName As Object, Password As Object, strCode As String 

    Set IE = New InternetExplorerMedium 
    IE.Visible = True 
    IE.Navigate "http://appln.ABC.com/index.epl" 

    Do While IE.ReadyState <> 4: DoEvents: Loop 

    Set Doc = IE.Document 

    Set UserName = Doc.getElementById("login_usr") 
    UserName.Value = "ABCDE" 

    Set Password = Doc.getElementById("login_password") 
    Password.Value = "ABCDE" 

    Set btnLogin = Doc.getElementById("Login") 
    btnLogin.Click 

End Sub 
+1

Hata hangi hat üzerinde? –

+0

Merhaba Tim, "Set Doc = IE.Document" öğesinden sonra hata görüntüleniyor – Stratos7

cevap

1

Bu örnekte açıklanan yöntemi denediniz mi?

Fill user name and password in a webpage using VBA

Ben size aslında bir nesne yaratmak değildir Kodunuzda

Set IE = CreateObject("InternetExplorer.Application") 

gerek, sadece bunu ilan ediyoruz.

DÜZENLEME

Belki Doc nesnesinin kullanımını bypass: bunlar sadece bir nesne kullanılır bağlantılı örnekte

Sub Website() 

    Dim IE As Object, UserName As Object, Password As Object, strCode As String 

    Set IE = New InternetExplorerMedium 
    IE.Visible = True 
    IE.Navigate "http://appln.ABC.com/index.epl" 

    Do While IE.ReadyState <> 4: DoEvents: Loop 

    Set UserName = IE.Document.getElementById("login_usr") 
    UserName.Value = "ABCDE" 

    Set Password = IE.Document.getElementById("login_password") 
    Password.Value = "ABCDE" 

    Set btnLogin = IE.Document.getElementById("Login") 
    btnLogin.Click 

End Sub 

, her şey için nesneleri oluşturmak gerekmez görünüyor sen Yapıyorsun. Yani, muhtemelen kurtulmak olabilir:

Sub Website() 

    Dim IE As Object 

    Set IE = New InternetExplorerMedium 
    IE.Visible = True 
    IE.Navigate "http://appln.ABC.com/index.epl" 

    Do While IE.ReadyState <> 4: DoEvents: Loop 

    With IE.Document 
     .getElementById("login_usr").Value = "ABCDE" 
     .getElementById("login_password").Value = "ABCDE" 
     .getElementById("Login").Click 
    End With 

End Sub 

Ayrıca iken hazır devlet için döngü, bu bağlantılı örnekte olduğu gibi ikinci do ekleyebilir.

+1

'Set IE = Yeni InternetExplorerMedium 'nesnesini oluşturuyor –

+0

Evet Bunu denedim. Bazı nedenlerle "Set IE = CreateObject (" InternetExplorer.application ") yerine" Set IE = New InternetExplorerMedium "u kullanmak zorunda kaldım." – Stratos7

+0

Teşekkürler Tim ", düzenlenmiş. –

1
Sub website() 
    Dim ie As Variant 
    Set ie = CreateObject("InternetExplorer.Application") 
    ie.Visible = True 
    ie.navigate "http://appln.ABC.com/index.epl" 
    Do While ie.readyState <> 4: DoEvents: Loop 
    ie.document.getElementById("login_usr").Value = "ABCDE" 
    ie.document.getElementById("login_password").Value = "ABCDE" 
    ie.document.getElementById("Login").Click 
End Sub 
+0

Cevabım bitene kadar cevabınıza bakmadım, aynı şeylere benziyor. "IHTMLElement" in amacını açıklayabilir misiniz? Kullanıldığını görmüyorum. –

+0

Merhaba karthick - Kodunuzu denediğimde, "Otomasyon hatası: Alınan nesnenin istemciden bağlantısı kesildi" hatası alıyorum. – Stratos7

+0

@ n8. IHTML bu nedenle burada hiç bir şekilde tavsiyenize göre kullanılmamıştır. Teşekkürler –

0

emin değilim nasıl ama

IE.Visible = False 

ayarladığınızda artık hata alamadım. Lütfen deneyin ve mümkünse neden olduğunu açıklayın ..

İlgili konular