Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1204to1208
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Webabfrage - Auf Basis Zelleingaben

Webabfrage - Auf Basis Zelleingaben
Stef@n
Hallo Excel-Freunde,
ich frage per Webabfrage Währungskurse in meine Datei.
ich möchte das insofern erweitern, daß er mir auf Basis der Eingabe in einer Zelle
die Webabfrage entsprechend anpasst.
Wenn ich in die Zelle z.B. 31.12.2010 reinschreibe, sollen mir die Kurse von 31.12.10 ausgegeben werden.
Wenn ich 28.12.2011 erfasse - entsprechend der Wert vom 28.02
Ebenso soll der Basis-Kurs mit einbezogen werden (entweder EUR, GBP usw.)
Bei der Webabfrage greife ich auf folgende Seite zurück:
http://www.xe.com/ict/?basecur=PLN&historical=true&month=2&day=31&year=2011&sort_by=code&image.x=33&image.y=15
basecur ist der Basiskurs - in diesem Fall PLN
month, day, year ergeben sich ebenfalls
Kann ich in die Werte in mehreren Zellen erfassen, auf die dann die Webabfrage entsprechen "reagiert"?
Freu mich auf einen Tip
Besten Gruß
Stef@n

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Einen Ansatz...
15.03.2011 16:50:17
Martin
Hallo Stefan,
das geht nur mit VBA. Mit folgendem Code wird schon einmal die richtige Internetseite geöffnet, wenn du ein Datum in eine Zelle schreibst:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not IsDate(Target) Then Exit Sub
Dim IEApp As Object
Dim IEDocument As Object
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.Navigate "http://www.xe.com/ict/?basecur=PLN&historical=true&month=" & Month(Target) & "& _
day=" & Day(Target) & "&year=" & Year(Target) & "&sort_by=code&image.x=33&image.y=15"
Do While IEApp.Busy
Loop
Do While IEApp.document.readyState  "complete"
Loop
'Hier muss die Auswertung der HTML-Seite erfolgen
Debug.Print IEApp.document.body.outerHTML
'IEApp.Quit
Set IEDocument = Nothing
Set IEApp = Nothing
End Sub
Die Webabfrage kann selbstverständlich auch ohne Anzeige des Browsers (mit IEApp.Visible = False) erfolgen, dann solltest du aber den Strich vor "IEApp.Quit" entfernen, damit der Browser auch wieder geschlossen wird.
Mit IEApp.document.body.innerHTML bzw. IEApp.document.body.outerHTML kann der Seiteninhalt ausgewertet werden, um den richtigen Wert zu finden und in deine Zelle zu schreiben. Da ich aber nicht weiß welcher Wert genau ausgelesen werden (konnte 28.02 am 31.12.2010 nicht finden), konnte ich das jetzt nicht für dich machen.
Viele Grüße
Martin
Anzeige
AW: Einen Ansatz...
16.03.2011 10:14:35
Stef@n
Hallo Martin
thx für deinen Tip .. leider funktioniert der Code nicht
Synthax-Fehler bei der Zeile
IEApp.Navigate "http://www.xe.com/ict/?basecur=PLN&historical=true&month=" & Month(Target) & "& _
day=" & Day(Target) & "&year=" & Year(Target) & "&sort_by=code&image.x=33&image.y=15"
Zum Thema 28.02 - sorry, da habe ich mich verschrieben
Wenn 31.12.2010 geschrieben wird, soll auch 31.12.2010 ausgelesen werden.
Wenn 28.02.2011 - dann 28.02.2011
Also immer das jeweilige Datum !
Kannst Du nochmal schauen ?
Besten Gruß
Stef@n
Anzeige
AW: Einen Ansatz...
16.03.2011 10:42:17
Martin
Hallo Stefan,
da ich den Code getestet habe, müsste er eigentlich funktionieren. Das Problem liegt wahrscheinlich im Kopieren des Codes: Bitte nehme die zweite Zeile "day ..." mit hoch in die Zeile, wo der Fehler auftritt und lösche das letzte Zeichen "_" in der Fehlerzeile.
Viele Grüße
Martin
AW: Einen Ansatz...
16.03.2011 11:05:12
Stef@n
Hallo Martin
jupp, das war der Fehler ! Danke Dir.
Ich will nicht immer einen bestimmten Wert auf der jeweiligen Internetseite auslesen,
sondern die komplette Seite soll in Excel eingefügt werden.
Später suche ich mir via Sverweis den jeweiligen Währungskurs in eine andere Tabelle.
Ist das möglich ?
Optimal wäre natürlich auch, dass die Ausgangswährung (in dem Beispiel PLN) auch individuell
im Excel-sheet eingegeben werden könnte.
Dann wäre der Code PERFEKT
Also: in eine Zelle das Datum, ein eine andere Zelle die Währung (z.B. USD, EUR, GBP, PLN usw)
Dank Dir sehr für deine Unterstützung
Mit bestem Gruß
Stef@n
Anzeige
AW: Einen Ansatz...
16.03.2011 11:29:28
Martin
Hallo Stefan,
okay, beginnen wir mit der leichteren Aufgabe: dem Währungszeichen. Willst du das Währungszeichen links, rechts, über oder unter das Datum schreiben? Schreibst du erst das Währungszeichen und dann das Datum oder anders herum?
Das Auslesen des Quellcodes ist etwas anspruchsvoller, das mache hebe ich mir auf ;-)
Viele Grüße
Martin
Noch eine Frage...
16.03.2011 11:32:51
Martin
...und wo genau sollen in dem Tabellenblatt die Kurse übertragen werden? Nenne mir bitte die oberste linke Zelle.
Viele Grüße
Martin
AW: Noch eine Frage...
16.03.2011 12:11:26
Stef@n
Hallo Martin
schau mal im Thread https://www.herber.de/forum/messages/1205924.html
da habe ich eine Beispieldatei hochgeladen !
Danke vorab und Gruß
Stef@n
Anzeige
AW: Einen Ansatz...
16.03.2011 11:56:19
Stef@n
Hallo Martin
prima ! Als Beispiel hier nun die Datei, anhand der verdeutlich werden soll,
was ich erreichen möchte
https://www.herber.de/bbs/user/73981.xls
Die Blau markierten Felder (jeweils Zeile 3) sind die jeweilig ersten Zellen der Webabfragen
In B:E werden die EURo-Kurse vom 31.12.2010 abgefragt
In H:K die PLN-Kurse vom 31.12.2010
Optimal wäre es, wenn ich in den Zellen
O2 das Jahr
P2 den Monat
Q2 den Tag
R2 das Währungskürzel
erfasst, und dann ab der Zelle O3 bis R...
die Webabfrage gestartet/durchgeführt wird (per Makro !?)
Wenn ich dann in Zelle R2 z.B. USD erfasst, sollen die Dollar-Währungen angezeigt werden.
Auf diese Tabellen greife ich dann später via sverweis zu.
Wäre klasse, wenn das klappt :))
In O2 bis R2 sind jetzt noch Formeln enthalten, die natürlich dann "raus müssen"
Besten Gruß
Stef@n
Anzeige
sorry, Frage noch offen OT
16.03.2011 11:58:35
Stef@n
Leider ist das Auslesen illegal
16.03.2011 12:28:26
Martin
Hallo Stefan,
ich habe mich gerade damit beschäftigt die Kurse aus dem Quellcode der Website zu ziehen und bin dabei auf folgende Zeile gestoßen: "Automated extraction of rates is prohibited under the Terms of Use."
Das heißt soviel wie: "Das automatische Auslesen der Kurse ist gemäß den Nutzungsbedingungen untersagt."
Vielleicht findest du ja eine andere Webseite von der man die Kurse kopieren darf.
Viele Grüße
Martin
AW: jetzt legal !
16.03.2011 14:28:12
Stef@n
Hallo Martin,
... upps - Danke für die Info. Das habe ich nicht gesehen !
Schade eigentlich, denn die Seite ist eigentlich PERFEKT !
Aber ich bin auf der Suche gewesen ... und habe was gefunden
z.B. (der Download ist bei beiden Seiten legal ! ;)
http://www.onvista.de/devisen/kursliste.html?ID_CURRENCY_FROM=EUR&ID_CURRENCY_TO=PLN&RANGE=12M
Die Seite ist insofern gut, dass der letzte Parameter noch erhöht werden kann auf z.B. 48M = 48 Monate
und man erhält für JEDEN Tag die Kurse !
http://de.exchange-rates.org/history/PLN/EUR/T
Auch sehr gut, aber nur 1/2 Jahr rückwirkende Währungskurse
Bei beiden Seiten muss man dann kein Datum bei der Webabfrage erfassen,
sondern nur die Währungskürzel
Ist ersten Falll ...FROM_EUR&ID_CURRENCY_TO=PLN&RANGE=...
beim zweiten Fall ../history/PLN/EUR/T
Freu mich auf einen Tip von Dir
und Danke nochmals, dass du bei der anderen Seite die Terms richtig gelesen hast !
Besten Gruß und
Stef@n
Anzeige
AW: jetzt legal !
16.03.2011 14:28:26
Stef@n
Hallo Martin,
... upps - Danke für die Info. Das habe ich nicht gesehen !
Schade eigentlich, denn die Seite ist eigentlich PERFEKT !
Aber ich bin auf der Suche gewesen ... und habe was gefunden
z.B. (der Download ist bei beiden Seiten legal ! ;)
http://www.onvista.de/devisen/kursliste.html?ID_CURRENCY_FROM=EUR&ID_CURRENCY_TO=PLN&RANGE=12M
Die Seite ist insofern gut, dass der letzte Parameter noch erhöht werden kann auf z.B. 48M = 48 Monate
und man erhält für JEDEN Tag die Kurse !
http://de.exchange-rates.org/history/PLN/EUR/T
Auch sehr gut, aber nur 1/2 Jahr rückwirkende Währungskurse
Bei beiden Seiten muss man dann kein Datum bei der Webabfrage erfassen,
sondern nur die Währungskürzel
Ist ersten Falll ...FROM_EUR&ID_CURRENCY_TO=PLN&RANGE=...
beim zweiten Fall ../history/PLN/EUR/T
Freu mich auf einen Tip von Dir
und Danke nochmals, dass du bei der anderen Seite die Terms richtig gelesen hast !
Besten Gruß und
Stef@n
Anzeige
AW: Einen Ansatz...
16.03.2011 11:05:21
Stef@n
Hallo Martin
jupp, das war der Fehler ! Danke Dir.
Ich will nicht immer einen bestimmten Wert auf der jeweiligen Internetseite auslesen,
sondern die komplette Seite soll in Excel eingefügt werden.
Später suche ich mir via Sverweis den jeweiligen Währungskurs in eine andere Tabelle.
Ist das möglich ?
Optimal wäre natürlich auch, dass die Ausgangswährung (in dem Beispiel PLN) auch individuell
im Excel-sheet eingegeben werden könnte.
Dann wäre der Code PERFEKT
Also: in eine Zelle das Datum, ein eine andere Zelle die Währung (z.B. USD, EUR, GBP, PLN usw)
Dank Dir sehr für deine Unterstützung
Mit bestem Gruß
Stef@n
Anzeige
kleine Hilfestellung - Umbrüche
16.03.2011 11:10:24
Erich
Hi,
bei langen Codezeilen produziert die Forumssoftware (nahezu zwangsläufig) Umbrüche,
die in VBA Probleme machen.
Dem kann man leicht entgehen, indem man die Codezeilen einfach gleich kürzer gestaltet,
die Umbrüche also in VBA einbaut.
Das liest sich auch in VBA besser - das VBA-Codefester ist ja auch nicht beliebig breit...
Hier im Beispiel würde ich schreiben:

' usw.
IEApp.Visible = True
IEApp.Navigate "http://www.xe.com/ict/?basecur=PLN&historical=true" & _
"&month=" & Month(Target) & "& day=" & Day(Target) & "&year=" & _
Year(Target) & "&sort_by=code&image.x=33&image.y=15"
Do While IEApp.Busy
' usw.
Die Zeile mit dem htt... wird wohl hier nach vorn gerückt, weil das Forum einen HTML-Link erkennt.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: kleine Hilfestellung - Umbrüche
16.03.2011 11:16:53
Stef@n
Hallo Erich
Danke für den Tip ! Der Unterstrich wird künftig mein "Lieblings-Zeichen" ;)
Besten Gruß
Stef@n

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige