Ich verbrachte mehrere Stunden damit zu erforschen, konnte keine Lösung finden.Fehler mit VBA Web Scrape
Ich versuche, eine relativ einfache VBA Web-Scrape auf Google zu tun. Ich bin gerade dabei, Text in das Google-Suchfeld einzugeben. Es gibt drei verschiedene Routen, die ich gesehen habe, die alle Fehler verursachen.
Ein Weg ist der folgende Code
Dim aEXPLORER as InternetExplorer
Set aEXPLORER = New InternetExplorer
Do While aEXPLORER.readyState <> READYSTATE_COMPLETE
Application.StatusBar = "Loading google..."
DoEvents
Loop
An diesem Punkt geht die erste Route wie folgt aus:
aEXPLORER.Document.Getelementbyid("idhere").value
Das Problem nach .document ist meine Intellisense nicht mehr funktioniert. Wenn ich den Code trotzdem schreibe, wird der Fehler behoben.
Strecke zwei - fügen Sie an der Spitze dim AHTML als Htmldocument
Set aHTML = aEXPLORER.document
aHTML.getElementById("idhere").value
Dies ist geringfügig erfolgreicher als ich zum getElementByID Tag bekommen, aber meine Intellisense keine .value überall finden. Ich habe viele andere Optionen wie Innertxt, etc. Aber kein Wert wie mehrere Leute in Tutorials online verwenden.
Ich schaute in meinen Objektbibliotheken und ich sehe kein .value in meiner HTMLDocument-Bibliothek oder meiner InternetExplorer-Bibliothek oder meiner Excel-Bibliothek.
Das Problem muss etwas mit der Deklaration einer Variablen oder eines Objekts oder etwas dieser Art sein. Warum komme ich nie zu einem Wert? Diese erste Methode arbeitete online für drei verschiedene Leute, die Tutorials zeigten, warum funktioniert es nicht, wenn ich es tue? Wie erhalten sie ein Getementbyid-Tag, ohne oben ein HTML-Dokument zu erstellen? Als Referenz verwendet dieses beliebte Lernprogramm Methode 1, "http://analystcave.com/web-scraping-tutorial/" etwa 75% des Weges durch das Tutorial.
Vielen Dank für solche hilfsbereiten Menschen. Ich bin am Ende meines momentan sehr begrenzten Seils.
Antwort Kredit geht an Berco!
Problem 1: Ich verwendete die falsche ID-Kennung. Lösung 1: Kopieren Sie den HTML-Code für jeden Interaktionspunkt in VBA, fügen Sie ihn ein, kopieren Sie ihn und fügen Sie ihn direkt ein. Dies hat auch einige andere Vorteile.
Problem 2: Ich war besorgt über den Verlust von Intellisense bei .value. Lösung 2: Das Fehlen von Intellisense bedeutet nicht, dass der Code nicht funktioniert. Es bedeutet nur, dass der Code nicht mit einem Dim/Set eingerichtet ist. Um dies zu lösen, müssen Sie dieses Element als HTMLInput dimmen, für das die Microsoft HTML-Objektbibliotheksreferenz überprüft werden muss. Sie können jedoch den Wert .value usw. auch ohne Intellisense verwenden, solange die HTML-Objektbibliotheksreferenz aktiviert ist.
Danke Berco! – StevenB
Berco, wollte Sie nur wissen lassen, dass ich von hier bis zur vollständigen Automatisierung meiner administrativen Aufgaben bei der Arbeit gekommen bin. Ich schätze Ihre Investition! – StevenB