2017-09-01 1 views
0

Je navigue vers une page Web dans IE en utilisant VBA. Les éléments de la page Web se chargent dynamiquement après quelques secondes. J'essaie de travailler avec une structure arborescente avec des liens dans cette page Web. Donc, je voulais voir le code HTML en utilisant intérieure le code suivant,Affichage de innerHTML des éléments dans IE dans la fenêtre immédiate

Sub treemenutest() 

    Dim ie As SHDocVw.InternetExplorerMedium 
    Dim doc As MSHTML.HTMLDocument 
    Dim elements3 As MSHTML.IHTMLElementCollection 
    Dim nameValueInput3 As MSHTML.HTMLInputElement 
    Dim LIS As IHTMLElementCollection 
    Dim LI As IHTMLElement 

    Set ie = New SHDocVw.InternetExplorerMedium 
    ie.Visible = True 
    ie.navigate Sheet1.TextBox1.Value 'web page URL 

    Do Until Not ie.Busy And ie.readyState = 4 
     DoEvents 
    Loop 

    Set doc = ie.document 

    Set elements3 = doc.getElementsByName("OK") 
    If Not elements3 Is Nothing Then 
     Set nameValueInput3 = elements3(1) 
      If Not nameValueInput3 Is Nothing And nameValueInput3.Type = "submit" Then _ 
        nameValueInput3.Click 
      End If 

    Set LIS = ie.document.getElementsByTagName("a") 
    For i = 0 To LIS.Length - 1 
    Debug.Print LI.innerHTML 
    Next 

    End Sub 

Debug.Print n'affiche aucune information dans la fenêtre immédiate. Y at-il un problème avec le codage ou est-ce parce que le contenu de la page Web est dynamique?

Toute information sera utile.

+0

Est-il possible pour vous de révéler le lien de cette page Web pour obtenir une plus rapide Solution? – SIM

+0

C'est un site officiel, donc je ne peux pas le révéler. – Aprnaa

+0

Vous trouverez plus facile d'utiliser les outils de développement de votre navigateur (appuyez sur F12 pour ouvrir) - qui vous montrera le code HTML actuel en cliquant simplement sur l'élément d'intérêt. –

Répondre

0

J'utiliser une boucle foreach

For each LI in LIS 
    Debug.Print LI.innerHTML 
Next 

Mais vous pouvez aussi parcourir les balises comme ceci:

For i = 0 To LIS.Length - 1 
    Debug.Print LIS.item(i).innerHTML 
Next 
+0

J'ai essayé d'utiliser le pour chaque boucle ... mais ma fenêtre immédiate est vide. – Aprnaa

+0

Je voudrais taper 'Stop' avant la boucle et ensuite exécuter le code. De là, je voudrais travailler le code directement à partir de la fenêtre immédiate. Lorsque vous définissez les variables, vérifiez la fenêtre Variables locales et examinez les propriétés de la variable jusqu'à ce que vous l'obteniez. –

+0

Puisque vous cliquez sur un bouton Soumettre, vous devriez probablement attendre que le nouveau document charge 'Do Until Not .Busy And ie.readyState = 4: DoEvents: Loop'. –