2016-06-23 11 views
0

Soweit ich sehen kann, ist nichts falsch mit diesem Code. In der Tat, auf einem meiner Computer funktioniert es ganz gut, aber auf zwei anderen tut es nicht! Alle drei führen Excel 2003 auf verschiedenen Windows-Versionen (7, 8.1 und 10) aus.IE Seite aktualisiert nicht - VBA

Was es tun soll, ist eine Suche zu aktivieren, laden Sie dann die Ergebnisseite und drucken Sie die innereHTML der Ergebnisseite. Eine Maschine (Sieg 8.1) macht genau das. Bei den anderen beiden Drucken wird das innere HTML der Suchseite gedruckt.

Muss ich nur mein vertrauenswürdiges Excel 2003 aufgeben? Oder ist es ein Problem mit meiner Windows-Installation? Die W10-Maschine ist eine saubere Installation von W10.

Ich bin bei meinem Verstand über dies! Also bitte hilf mir. :)

'This uses early binding 
'In menu at top of page - Tools...Reference.... Microsoft Internet Controls  and Microsoft HTML Object Library must both be ticked 

Sub main() 
sUrl = "https://www.insolvencydirect.bis.gov.uk/FIP1/" 
Dim IE As InternetExplorer 
Dim doc, element 
Set IE = New InternetExplorer 

IE.Visible = True 


For iii = Asc("A") To Asc("B") ' *** test use B *** Do A-Z 
aaa = Chr(iii) 


IE.navigate sUrl 

Do 
DoEvents 
Loop Until IE.readyState = READYSTATE_COMPLETE 

Set doc = IE.document 




doc.getElementById("IPSurname").Value = aaa 

doc.forms.Item(0).elements(7).Click 



'loading new page with data 


Do While IE.Busy Or IE.readyState <> 4 
DoEvents 
Loop 

Set doc = IE.document 

MyBit = doc.body.innerHTML 
Debug.Print MyBit 

Next 
End Sub 
+0

Ich denke, Sich mit einem Timing-Problem zu tun, die zweite Seite auf Laden. Wenn ich durch den Code gehe, funktioniert es gut, aber wenn ich es ausführe, bekomme ich das gleiche Ergebnis, das du beschreibst. Ich hatte noch keine Zeit, um mit einer Lösung zu spielen, aber vielleicht hilft Ihnen das zu einer Lösung. –

+0

Vielen Dank für das Betrachten. Und reproduziert den Fehler! Ich dachte, die Idee von Do While IE.Busy oder IE.readyState <> 4 ist, auf die Seite zu warten, die vollständig geladen wird. Ich werde eine Verzögerung einlegen und es erneut versuchen, aber ich bin nicht wirklich überzeugt. – Stumped

+0

Nun, ich muss meine Worte essen. Das Einsetzen in einer Verzögerung von 2 Sekunden löst das Problem. (Nicht 1 Sekunde - das ist nicht lang genug.) Jeder möchte erklären, warum das Warten auf IE nicht ausreicht, bitte? – Stumped

Antwort

0

einen Element-Tag von der Seite wählen und das tun:

. 
. 
IE.navigate sUrl 
Do 
DoEvents 
Loop Until IE.readyState = READYSTATE_COMPLETE 
Set doc = IE.document 

Do While True 
If ie.document.getElementsByTagName("element tag").Length > 0 Then 
Exit Do 
End If 
    Application.Wait DateAdd("s", 1, Now) 
Loop 
. 
. 
. 
Verwandte Themen