Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

automat. Auslesen des Wechselkurses





Frage

Hallo Leute, würde gerne wissen, ob und wie es möglich ist den aktuellen Wechselkurs von der yahoo-seite (http://de.finance.yahoo.com/waehrungsrechner/convert?amt=31%2C2&from=USD&to=EUR&submit=Umrechnen) automatisch per VBA auszulesen und in einem excel sheet zu speichern. Wäre doch ne feine sache per Knopfdruck täglich den aktuellen kurs zu haben... Gruesse Kursi

Antwort 1 von zero_-_-cool

Im Grunde genommen ist es möglich soetwas zu machen. Aber gleich vorweg, es ist nicht gerade einfach, zumindest für mich^^.

Also gut, ich erklär dir mal wie du es realisieren könntest. Wenn du danach noch interesse hast, melde dich kurz, dann versuch ich es genauer zu erklären.


Als erstes musst du per Script anweisen, dass diese HTML Seite in einen Ordner gedownloadet wird.
Der Befehl hierzu sieht folgendermaßen aus:

Text1 = "http://de.finance.yahoo.com/
waehrungsrechner/convert?amt=31%2C2&from=USD&to=EUR&submit=Umrechnen"
strURL = StrConv(Text1, vbUnicode)
DoFileDownload strURL


Nachdem du die Seite gedwonloadet hast, musst du im Seitenquelltext eine markante Stelle suchen.
z. B. eine Zeile etwas über dem Wechselkurs, die nur einmal in der Seite vorkommt. Voraussetzung dafür ist natürlich das die nichts an der Grundstruktur des Quelltextes ändern. Also z. B. diese Zeile hier:
class="yfnc_tablehead1"><b>Briefkurs</b></td></tr><tr align="center"><td 


Jetzt musst du nur noch den Seitenquelltext einlesen und VBA nach dem obigen String suchen lassen. Danach sagst du "gehe x Zeilen nach unten" (in die Zeile in die der Kurs liegt) und fange an "ab x Zeichen" einzulesen und höre nach "y Zeichen" auf damit. Und schon hast du deinen Wechselkurs ausgelesen.

Das hört sich jetzt etwas kompliziert an und das ist es auch.^^ Aber im Grund beschränkt es sich auf das
1. Speichern einer HTML Seite
2. Einlesen des Seitenquelltextes
3. Suchen des Wechselkurses
4. Auslesen des Wechselkurses

Wie gesagt, ich habe das ganze mal für Aktienkurse programmiert. Und wenn du immer noch Lust hast und nicht ganz weiterkommst, schreib einfach, dann versuch ich mal das zu realisieren und stell dir dan die *.*xls Datei rein.

Antwort 2 von manei

Hallo,

also ich würde das direkt einlesen und verarbeiten.

Ich mache das zwar mit VBS, sollte aber in der Grundzügen gleich sein

1. 1 Application-Object für IE erstellen
2. Seite aufrufen mit [Object].navigate URL
3. Object mit [Object}.Document erstellen
4. einlesen mit x = Split(I[Object/3.body.innerHTML, vbLf)
5. mit InStr "USDEUR=X" -Zeile suchen

Danach findest du die Kurse je nachdem welchen Du haben willst in den nächsten Zeilen 3 / 5 / 6

Mit InStr(x, "tabledata1") + 13 und
InStr(x, "</td") hast du dann Abfang und Ende von dem was Du haben willst.

MfG maneich

Antwort 3 von zero_-_-cool

Interessant @manei.
Ich wusste nicht das man auch für IE ein Application.Object erstellen kann.^^
Das probier ich bei Gelegenheit mal aus.

@KursLeser
Falls es dich interessiert, hab ich hier eine Seite gefunden in der das Applicaton.Object im Zusammenhang mit IE erklärt wird.
http://mypage.bluewin.ch/reprobst/WordFAQ/GoWWW.htm

Antwort 4 von manei

Hallo zero_-_-cool,

hier mal ein kleines Beispiel in Form einer Function um eine Seite im Quelltext zu laden. Klapp natürlich auch ohne einbinden in eine Function.

Function int_dat(ByVal url)
´url = die aufgerufen werden soll
Set IE = WScript.CreateObject("InternetExplorer.Application")
IE.Visible = 0
On Error Resume Next
IE.Navigate url
do while IE.ReadyState <> 4
loop
Set IEDoc = IE.Document
int_dat = Split(IEDoc.body.innerHTML, vbLf)
Set IEDoc = nothing
End Function

MfG maneich

Antwort 5 von zero_-_-cool

Dank der schönen Funktion von manei hab ich dir das ganze mal in eine *.*xls Datei gepackt.

http://guardsofgeumoh.piranho.de/KursLeser.zip

Und wie gewünscht, mit einem KLICK^^

Antwort 6 von TomG

Packe Dir doch ein Börsenkurs-Widget auf den Desktop. Dann hast Du Deine Kurse permanent.

Gruß
Thomas

Antwort 7 von TomG

Wer Lesen kann ist im Vorteil :-) Sorry.
Du wolltest gar keine Börsenkurse sondern Umrechnungskurse. Das sollte es auch geben. Einfach mal googlen.

thomas

Antwort 8 von zero_-_-cool

@TomG
Das ist doch langweilig :D
Es ist einfach für etwas n Programm zu suchen, aber wesentlich spannender etwas selbst zu programmieren.^^
Ich kann mich stundenlang in nen Code vertiefen und versuchen ihn zu verstehen. Und wenn man dann den Code verstanden hat, ist es einfach ein gutes Gefühl. :)

Antwort 9 von manei

Hallo,

wenn das, was über den Link angezeigt wird kommt, wenn Du das Script ausführst, so machst du einen Fehler. Ich denke aber eher, daß hier Deine Datei gesperrt ist.

Hast Du einen Fehler in Deinem Script, kommt das davon, daß das Apostroph in der ersten Zeile der Function hier im Supportnet falsch interpretiert wird. Denn ich habe mir das hier rauskopiert und bekam einen Laufzeitfehler. Es muß das Zeichen (Umschalt #) sein. Also ändern oder die Zeile mal ganz löschen.

Also hier mal das Script mit allen 3 Wechselkurse auf dieser Seite und das läuft.

w-kurs.vbs
--------------------------------snip
url = "http://de.finance.yahoo.com/waehrungsrechner/convert?amt=31%2C2&from=USD&to=EUR&submit=Umrechnen"

dat = int_dat(url)
For i = 0 To Ubound(dat)
If 0 < InStr(dat(i), "USDEUR=X") Then
m = len("<td class=""yfnc_tabledata1"">") : n = InStr(dat(i+3), "</TD>")
wechselk = mid(dat(i+3), m-1, n-m+1) : geldk = mid(dat(i+5), m-1, n-m+1) : briefk = mid(dat(i+6), m-1, n-m+1)
WScript.Echo wechselk & vbCrLf & geldk & vbCrLf & briefk
Exit For
End If
Next


Function int_dat(ByVal url)
´url die aufgerufen werden soll
Set IE = WScript.CreateObject("InternetExplorer.Application")
IE.Visible = 0
On Error Resume Next
IE.Navigate url
do while IE.ReadyState <> 4
loop
Set IEDoc = IE.Document
int_dat = Split(IEDoc.body.innerHTML, vbLf)
Set IEDoc = nothing
End Function
--------------------------------------snap

MfG maneich

Antwort 10 von zero_-_-cool

@manei
Meinst du meine xls?
Also bei mir hats prima funktioniert. Das mit dem Abostroph hab ich natürlich sofort bemerkt.^^

Ich könnte mir höchstens vorstellen, dass der Fehler von evtl. unterschiedlichen Excelversionen her rührt. Ich musste z. B. in Excel 2000 die Zeile in dem das Objekt erstellt wird abändern:

Set IE = WScript.CreateObject("InternetExplorer.Application") 


in

Set IE = CreateObject ("InternetExplorer.Application")


Maybe liegts daran??

Antwort 11 von zero_-_-cool

asso, sry ^^
jetzt hab ichs kapiert.
Mein Link funzt net.^^

probiers mal damit

http://rapidshare.de/files/18463084/KursLeser.zip.html

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: