Vastlopende Excel bij Doc Readystate

Status
Niet open voor verdere reacties.

Yannick b

Gebruiker
Lid geworden
20 mei 2007
Berichten
10
Beste,

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:
Code:
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:
Code:
            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 een debug check uitgevoerd, en zogauw het script bij de volgende regel:
Code:
While ((doc.readyState <> "complete"))
Aankomt crasht Excel volledig en moet deze opnieuw worden opgestart, hebben jullie misschien enig idee hoe dit zou kunnen komen?

Bedankt,
Yannick
 
Laatst bewerkt:
Hoe kom je aan het doc-object? Is dat een standaard browser-element op een formulier? Welke browser is dat?
 
Code:
    Dim d As New MSHTML.HTMLDocument
    Dim doc As HTMLDocument

    Set doc = d.createDocumentFromUrl(urlhun, vbNullString)

Vervolgens wordt na de 'Set doc' regel de doc.readystate check uitgevoerd.
 
Als ik dit doe komt er bij mij via www.f1pits.net een foutmelding:
"Automatiseringsfout - De verbindingen van het aangeroepen object met de clients zijn verbroken."

Die kan ik gek genoeg met "on error resume next" niet ondervangen. Ik deed het vanuit VBA in Word en dat klapte er ook uit (niet altijd trouwens), dus het is wel een heel eng verschijnsel.

Een andere techniek proberen?
 
Als ik dit doe komt er bij mij via www.f1pits.net een foutmelding:
"Automatiseringsfout - De verbindingen van het aangeroepen object met de clients zijn verbroken."

Die kan ik gek genoeg met "on error resume next" niet ondervangen. Ik deed het vanuit VBA in Word en dat klapte er ook uit (niet altijd trouwens), dus het is wel een heel eng verschijnsel.

Een andere techniek proberen?
Bedankt vooe je reactie,
die specifieke foutmelding heb ik zelf nooit gekregen, maar ik heb inderdaad bovenaan ook 'on error resume next' staan, maar excel blijft er maar uitklappen.

Ik heb zojuist de volgende code boven de 'Set doc' regel geplaatst:
Code:
                Set xml = CreateObject("Microsoft.XMLHTTP")
                xml.Open "get", urlhun, False
                xml.send

                MsgBox "Ok"
En eerst laat die inderdaad de "Ok" zien, en vervolgens crasht die bij de doc.readystate controle. Mjah, het probleem is dat ik die Doc. wel nodig heb voor de rest van het gehele script.
 
Ik heb zojuist gevonden dat het script niet vastloopt bij de doc.readystate, maar bij het volgende stuk:
Code:
Set doc = d.createDocumentFromUrl(urlhun, vbNullString)

Heeft iemand hier enig idee waarom excel op deze regel zou crashen?
 
Wordt het niet eens tijd de hele code te plaatsen ?
 
Wordt het niet eens tijd de hele code te plaatsen ?
Nee, dat is niet nodig. Het gaat alleen fout bij de betreffende regel. Voor de rest werkt het script perfect en niet iedereen hoeft dit script te hebben.
 
Wat snb bedoelt, is dat je pas kunt zien wat er fout gaat als je ook ziet wat er goed gaat.
Ik snap best dat je trots bent op je scriptje, maar als je hulp wilt zul je toch echt meer informatie moeten geven, zodat gerichter geholpen kan worden.

Je kunt het ook over een andere boeg gooien:
Een logfile bijhouden, en dan de sites waarop je Excel crasht overslaan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan