Registriert seit: 17.05.2020
Version(en): 365
Hallo zusammen,
habe hier eine Webseite:
www.timocom.de/WWW/media/ads/transportbarometer/300x260/de/index2.cfmDiese zeigt %-Zahlen an. Nun möchte ich gerne den linken %-Wert in Excel auslesen.
Wäre schon mal toll, wenn mir jemand hier helfen könnte.
Die nächste Frage wäre, sofern das funktioniert, ob sich dieser Wert auch stetig automatisch aktualisieren lässt ( ändert sich auf der Seite stündlich).
Vielen, vielen Dank für Eure Hilfe.
BL
Registriert seit: 17.05.2020
Version(en): 365
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
Hi,
sei mal bitte nicht so ungeduldig. Es sind gerade 2 Std. seit deiner Fragestellung vergangen. Und es ist Sonntagnachmittag! Die Helfer, die sich die Probleme anderer zu deren eigenen machen, tun dies freiwillig in ihrer Freizeit!!
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 22.11.2019
Version(en): 365
Hallo BL,
hier mal eine Idee, wie Du diesen einen Wert mit dem IE abholen könntest.
Probiere es halt mal aus, ob es so richtig ist.....
Option ExplicitPublic bCheck
As BooleanPrivate Declare PtrSafe Sub Sleep
Lib "kernel32" (
ByVal dwMilliseconds
As Long)
Sub Starten()'Anwendung sofort starten und Timer setzen auf 59 Min If bCheck =
False Then GetPercentFromWeb
'Sofort starten bCheck =
True Application.OnTime Time + TimeSerial(
0,
59,
0),
"GetPercentFromWeb"End SubSub Beenden()'Timer ausschalten bCheck =
FalseEnd SubPrivate Sub GetPercentFromWeb() Dim oNode
As Object, T
As String, Teil(
)
As String With CreateObject(
"InternetExplorer.Application")
.navigate
"www.timocom.de/WWW/media/ads/transportbarometer/300x260/de/index2.cfm" While Not .readyState =
4: DoEvents:
Wend 'Warten bis Seite geladen ist On Error Resume Next Sleep
100 '100 mSec warten Set oNode = .document.getElementsByTagName(
"script")(
4)
If Not oNode
Is Nothing Then 'Element gefunden? Teil =
Split(oNode.outerText,
"percentage = ")
If UBound(Teil) >
1 Then _
T =
Left$(Teil(
2),
InStr(Teil(
2),
";") -
1) &
"%" End If .Quit
'IE schließen MsgBox T
'Wert anzeigen End With If bCheck
Then Starten
'in x-Minuten erneut aufrufenEnd Sub
viele Grüße
Karl-Heinz
Registriert seit: 17.05.2020
Version(en): 365
24.05.2020, 15:11
(Dieser Beitrag wurde zuletzt bearbeitet: 24.05.2020, 15:29 von BL1976.)
Sorry, wollte nicht ungeduldig wirken.
Danke für den Hinweis
Oh, vielen lieben Dank. Werde es versuchen und berichten
Klappt alles wunderbar, habe nur eine Kleinigkeit vergessen.
Das Ergebnis sollte nicht als MSG Box dargestellt werden, lediglich als Zahl in Zelle A1
Bekomme ich irgendwie nicht hin, aber sonst ist alles super. Top
Vielen lieben Dank dafür
Registriert seit: 12.02.2019
Version(en): 365
Hallo zusammen,
nun warst Du schneller Karl-Heinz :19: Ich poste meine Lösung trotzdem noch:
Code:
Sub ProzentAuslesen()
Dim browser As Object
Dim url As String
Dim nodeAllScripts As Object
Dim nodeLastScript As Object
Dim splitArray() As String
Dim freightPercentage As Long
url = "https://www.timocom.de/WWW/media/ads/transportbarometer/300x260/de/index2.cfm"
'Internet Explorer initialisieren, Sichtbarkeit festlegen,
'URL aufrufen und warten bis Seite vollständig geladen wurde
Set browser = CreateObject("internetexplorer.application")
browser.Visible = False
browser.navigate url
Do Until browser.readyState = 4: DoEvents: Loop
'Alle Script-Elemente in einer NodeList versammeln
Set nodeAllScripts = browser.document.getElementsByTagName("script")
'Das bentigte Script steht im letzten Element der erstellten NodeList
Set nodeLastScript = nodeAllScripts(nodeAllScripts.Length - 1)
'Ab hier muss das JS manuell auseinandergenommen werden
'Der gesuchte Wert steht im 4 Element, wenn man das Semikolon als Delimeter nimmt
'
'<script language="JavaScript">
' $(function() {
' var freightPercentage = 0;
' var vehiclePercentage = 0;
' var percentage = 0;
'
' percentage = 37;
' freightPercentage = percentage;
' vehiclePercentage = 100-percentage;
' ...
' ...
splitArray = Split(nodeLastScript.innertext, ";")
'Das 4 Element nochmal an den Leerzeichen aufsplitten
splitArray = Split(splitArray(3))
'Das letzte Element im splitArray ist die gesuchte Zahl
freightPercentage = splitArray(UBound(splitArray))
'Aufräumen
browser.Quit
Set browser = Nothing
Set nodeAllScripts = Nothing
Set nodeLastScript = Nothing
'Wert ausgeben
MsgBox freightPercentage
End Sub
Um den Wert in A1 zu schreiben brauchst Du nur die Zeile für die MsgBox ersetzen durch:
Code:
Sheets("Tabelle1").Cells(1, 1).Value = freightPercentage
Den Tabellennamen musst Du atürlich anpassen.
Viele Grüße,
Zwenn
Registriert seit: 17.05.2020
Version(en): 365
SUUUUUPER!!!!!! Vielen lieben Dank!!!!
Wirklich top!!! ich versuche es seit 2 Tagen und habe es einfach nicht hinbekommen. Super:)
Registriert seit: 22.11.2019
Version(en): 365
Hallo zusammen,
Sheets("Tabelle1").Cells(1, 1).Value = T
aber das hat Zwenn ja schon sinngemäß erledigt und dem ist ja nichts mehr hinzuzufügen.
@Zwenn: Was mich hier nur wundert, der zweite, rechte Wert ist irgendwie nicht zu finden. War zwar nicht gefragt, aber irgendwo muss der ja auch her kommen....
viele Grüße
Karl-Heinz
Registriert seit: 12.02.2019
Version(en): 365
Hallo Karl-Heinz,
das JS rechnet den Wert
vehiclePercentage einfach aus. Man kann nur den Wert
percentage direkt abgreifen. Dieser dient als Ausgangspunkt und wird mit
freightPercentage gleich gesetzt:
Code:
<script language="JavaScript">
$(function() {
var freightPercentage = 0;
var vehiclePercentage = 0;
var percentage = 0;
percentage = 37;
freightPercentage = percentage;
vehiclePercentage = 100-percentage;
...
...
Viele Grüße,
Zwenn