ich versuchte, gehen zu sammeln/schaben Daten aus dem Web mit diesem Code:nicht Excel verwenden können, während Code ausgeführt wird
Sub GetSP()
Dim appIE As Object
Set appIE = CreateObject("internetexplorer.application")
With appIE
.Navigate "http://uk.investing.com/currencies/streaming-forex-rates-majors"
.Visible = True
End With
Do While appIE.Busy
DoEvents
Loop
RunCodeEveryX:
Set allRowOfData = appIE.document.getElementById("pair_1")
Dim myValue As String: myValue = allRowOfData.Cells(2).innerHTML
Range("A1").Value = myValue
Application.Wait Now + TimeValue("00:00:01")
GoTo RunCodeEveryX
appIE.Quit
Set appIE = Nothing
End Sub
Wenn jedoch der Code ausgeführt wird, kann ich nicht einmal bearbeiten Sie die Excel weil Excel damit beschäftigt zu arbeiten, um die Daten zu bekommen. Was ich hoffe, war der Code läuft, ich kann etwas aus dem gleichen Blatt mit dem Web-Scraping weiter machen.
Gibt es eine Alternative, jetzt zu warten? (Was ich glaube, macht Excel beschäftigt)
Vielen Dank!
@jeeped - Ich konnte die entsprechenden Daten mit Ihrem bevorzugten Modus sammeln und die Daten erfolgreich extrahieren. Ich frage mich, ob es eine gute Möglichkeit gibt, diesen Schritt unendlich zu wiederholen (da die Daten auf der Webseite aktualisiert werden, würde ich gerne wiederholen, wie mit meinem ursprünglichen Code), bis ich es beende, während ich den Rest des Arbeitsblatts bearbeiten kann .
Danke! Ich hoffe, es macht Ihnen nichts aus, wenn ich Sie gezielt anspreche, obwohl die Frage für alle offen ist.
Sub GetSP()
Dim HTMLDoc As New HTMLDocument
Dim oHttp As MSXML2.xmlHTTP
On Error Resume Next
Set oHttp = New MSXML2.xmlHTTP
If Err.Number <> 0 Then
Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
MsgBox "Error 0 has occured"
End If
On Error GoTo 0
If oHttp Is Nothing Then
MsgBox "Just cannot make"
Exit Sub
End If
oHttp.Open "GET", "http://uk.investing.com/currencies/streaming-forex-rates-majors", False
oHttp.send
HTMLDoc.body.innerHTML = oHttp.responseText
With HTMLDoc
PriceGetter = .getElementById("pair_1").innerText
PriceGetter2 = .getElementsByClassName("pid-1-bid")(0).innerText
Range("A1").Value = PriceGetter
Range("A2").Value = PriceGetter2
End With
End Sub
VBA sollte in erster Linie Single-Threaded in Betracht gezogen werden. Du fragst nur nach Ärger. Entfernen Sie sich von einer InternetExplorer-Anwendung zugunsten einer xmlhttprequest, um Ihre Abrufe zu beschleunigen. – Jeeped
Hi @Jeeped Ich würde gerne darüber lernen und lesen. Würde es auch mit Excel funktionieren? – bebongtheshark
Siehe [diese] (http://stackoverflow.com/search?q=user%3A4039065+%5Bexcel%5Dxmlhttp). Das sind nur meine; Es gibt viele mehr. – Jeeped