Hallo Ich habe dieses seltsame Problem, wo ich Fehler 91 ("Objektvariable oder mit Blockvariable nicht gesetzt") bekomme. Ich bekomme den Fehler nicht immer, wenn ich das Skript ausführe, nur hin und wieder (zufällig). Ich habe versucht, so viel wie möglich ohne Erfolg zu tun.VBA EXCEL Fehler 91 Objektvariable oder mit Blockvariable nicht gesetzt
Ich kratze eine Website, um die neuesten Preise einiger PC-Komponenten zu erhalten.
Um das zu tun, habe ich ein Skript erstellt und das Skript mehrere Male nacheinander für verschiedene Teile aufrufen. Der Fehler bezieht sich nicht auf ein bestimmtes Teil. Ich bekomme den Fehler zufällig auf allen Teilen. Manchmal kann ich alle Anrufe ohne Fehler machen.
Das Skript (nicht das vollständige Skript, nur das, was Sie brauchen):
Sub ImportUrlData(url As String)
Dim ie As InternetExplorer
Dim html As HTMLDocument
Dim varListingIDElement As IHTMLElement
Dim varShopName As String
varShopName = ""
Set ie = New InternetExplorer
ie.Visible = False
ie.navigate url
Do While ie.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
Set html = ie.document
Set varListingIDElement = html.getElementById("listing")
varShopName = getXPathElement("/table/tbody/tr[1]/td[1]/p/a", varListingIDElement).innerText
Ich erhalte den Fehler immer auf dieser letzten Zeile:
varShopName = getXPathElement("/table/tbody/tr[" & count & "]/td[1]/p/a", varListingIDElement).innerText
(Der Fehler innerhalb der nicht auftritt 'getXPathElement' Funktion, also keine Notwendigkeit, das auch zu zeigen.Wenn Sie es sich ansehen wollen, fragen Sie einfach und ich poste es hier in einer Bearbeitung.)
Wenn ich von Anfang bis Ende mit F8 debuggen Ich werde nie bekommen der Fehler. Ist es möglich, dass der nächste Anruf bereits beginnt, bevor der vorherige noch nicht fertig ist?
Vielen Dank im Voraus!
(Sorry, wenn es einige holländische Worte, die ich übersehen haben.)
Ich versuchte nur die erste Annäherung und es arbeitete so lange, dass ich dachte, dass es repariert wurde, bis ich den Fehler wieder erhielt. Jetzt füge ich den zweiten Ansatz hinzu. (Sie haben ein ')' nach 'Application.Wait (Now + TimeValue ("00:00:02")' vergessen. Ich kann es nicht bearbeiten, weil ich mindestens 6 Zeichen hinzufügen oder ändern muss.) –