[VBA] Vastlopende Excel bij Doc Readystate

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste Tweakers,

Ik heb een VBA Macro gemaakt voor Excel waarin diverse sites worden benaderd en vervolgens wordt informatie van de betreffende site afgehaald(Broncode e.d.),

Voordat de informatie kan worden opgehaald moet de site wel helemaal geladen zijn, dit controleer ik d.m.v. de volgende code:
Visual Basic:
1
2
3
While ((doc.readyState <> "complete"))
     DoEvents
Wend


Bij een heleboel sites werkt dit correct, alleen sommige sites gaven de 'Complete' status niet terug waardoor het script niet verder kon doorlopen. Ik ben vervolgens naar een oplossing gaan zoeken en de volgende code erbij geplaatst:
Visual Basic:
1
2
3
4
5
6
7
8
9
            Start = Timer

            While ((doc.readyState <> "complete"))
                If ((Timer - Start) > 30) Then
                     ' Voer actie uit
                Else
                     DoEvents
                End if
             Wend


Zodat automatisch na 30 seconden het script vervolgt zou moeten worden, alleen raar genoeg bij diverse sites zoals onderstaande blijven problemen optreden:
- http://www.f1pits.net/
- http://www.fr-fans.nl/

Deze zenden namelijk niet de 'complete' status terug, ik heb de debug handleiding van Tweakers al doorgenomen. Maar zogauw het script bij de regel:
Visual Basic:
1
While ((doc.readyState <> "complete"))

Aankomt crasht Excel volledig en moet deze opnieuw worden opgestart, hebben jullie Tweakers misschien enig idee hoe dit zou kunnen komen?

Bedankt,
Yannick

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Deze vraag heeft weinig met Excel of VBA te maken denk ik. Waarom gebruik je MSHTML.HTMLDocument om een webpagina op te halen? De ingebouwde functie Data->From Web kan bijvoorbeeld je eerste site gewoon als text lezen, en dan heb je niet eens vba nodig (wel worden de formules dan vrij ingewikkeld om de juiste text eruit te krijgen waarschijnlijk).. Of zie Screen Scraping 101 with VBA die gewoon MSXML2.XMLHTTP gebruikt. :p

offtopic:
Is dit trouwens niet exact dezelfde vraag als je vorige topic of mis ik iets?

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb MSHTML.HTMLDocument gebruikt, aangezien het dan een stuk makkelijker is om daarna links, anchors e.d. op te halen. Wat bij Data->From Web toch een heel stuk ingewikkelder gaat.

Dus ik moet wel de MSHTML-functie gebruiken, alleen raar genoeg crasht deze nogsteeds.

@ je offtopic vraag:
Het is niet exact hetzelfde, het www/non-www probleem is opgelost, ik gebruikte voorheen de XML manier, maar dit had zo zijn nadelen. Daarom heb ik dit vervangen door de MSHTML.HTMLDocument.

Verwijderd

Topicstarter
Hallo, zijn er evt. nog anderen die een oplossing voor dit probleem hebben?