Bevor ich meine Frage stellen, ich bin ein Amateur-Coder mit im Grunde keine sinnvolle Erfahrung über VBA in MS-Office-Anwendungen (ich weiß - Noob)Webseite Datentabelle Schaber
Ich versuche, einen Web-Schaber zu erstellen Mit VBA, um Daten in Excel zu importieren und gemäß meiner Kommentare in der folgenden Code-Extrakt, war das Beste, was ich in der Lage zu finden, war in der gewinnenden Antwort auf this question.
Im Folgenden benutze ich investment.com als Beispiel, aber in Wirklichkeit wird mein Projekt über mehrere Websites laufen und in eine Matrizen einfließen, die täglich aktualisiert werden und sich selbst ausnutzen können, wenn Ereignisse ablaufen - aus diesem Grund würde ich eher die Arbeitslast auf der Code-Seite, um die Eingaben auf eine laufende Basis so minimal wie möglich zu machen (für mich).
, die mit im Auge, kann ich fragen, ob es einen Weg gibt, eine der folgenden Aktionen zu tun (selbst stemmen, wird dies für einige erschaudern-würdig Grundkenntnisse):
Gibt es eine Möglichkeit in was kann ich und navigieren Sie zu einer URL und führen Sie eine
for each
Schleife auf jeder Tabelle auf dieser Seite (ohne eine bekannte ID für alle)? Dies dient sowohl dazu, meinen Code zu beschleunigen, als auch meine Eingaben zu minimieren, da es ziemlich viele Daten zu aktualisieren gibt und ich plante, einen 2-Minuten-Looping-Trigger auf die Aktualisierung zu setzen.Anstatt zu tun, was ich unten getan habe, ist es möglich, eine Tabelle anstelle einer Zeile zu referenzieren und etwas in der Art von Cells (2,5) .value auszuführen, um den Wert innerhalb der Zeile zurückzugeben 1, Spalte 4? (Unter der Annahme, dass die Array-Indizierung in beiden Dimensionen bei 0 beginnt?) Außerdem ist meine erste Spalte (mein Primärschlüssel in mancher Hinsicht) möglicherweise nicht in der gleichen Reihenfolge in allen Quellen, also gibt es eine Möglichkeit, wie ich das machen könnte das Äquivalent zu
Columns("A:A").Find(What:=[Primary key], After:=Cells(1, 1), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True, SearchFormat:=False).Row
zu finden, welche Zeile in der Tabelle bezieht sich auf die gerade ich suche?
Code:
Sub Scraper()
Dim appIE, allRowOfData As Object
' As per https://stackoverflow.com/questions/27066963/scraping-data-from-website-using-vba
Set appIE = CreateObject("internetexplorer.application")
With appIE
.Navigate "http://uk.investing.com/rates-bonds/financial-futures" 'Sample page
.Visible = False
End With
Do While appIE.Busy
Application.Wait (Now + TimeValue("0:00:01")) 'If page not open, wait a second befor trying again
Loop
Set allRowOfData = appIE.document.getElementById("pair_8907")
'tr id="[ID of row within table]"
Dim myValue As String: myValue = allRowOfData.Cells(8).innerHTML
'The 8 is the column number of the table
'(note: column numbers start at 0 so the 9th column should have "8" entered here
Set appIE = Nothing
Range("A1").Value = myValue
End Sub
Warum werde ich gewählt? – Jeremy
@ R3uK Danke für die Bearbeitung - ich konnte es nicht aus irgendeinem Grund zu codieren – Jeremy
Sie brauchen eine Zeile mit normalem Text zwischen Listen und Code! ;) Anscheinend wurdest du abgelehnt, weil deine Frage zu weit gefasst ist, du musst vielleicht Prioritäten setzen! ;) Und andere Frage später oder anderswo stellen (dh 3. ist nicht sehr klar und könnte auf SuperUser gefragt werden) – R3uK