Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1628to1632
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

Abrufen von Monatlichen Zollkursen

Abrufen von Monatlichen Zollkursen
27.06.2018 11:58:23
Monatlichen
Hallo Zusammen,
ich benötige für die Arbeit in einer Execl-Datei die MONATSAKTUELLEN Zollwährungskurse.
Diese würde ich gerne in meine Exel-Datei dann verwenden.
Leider hat mich die Excel-Funktion unter: Daten -Quelle Website: nur bedingt zum erfolg geführt.
Denn leider werden nur die Zollkurse der"Ursprungs"-Seite angezeigt und nicht ALLE Kurse.
Auch den "kopierten Link" der Seite mit ALLEN Kursen hat nicht funktioniert.
Ein weiteres Problem es muss die "Monatsaktuellen" Kurse abrufen.
Anbei der Link und die von mir erstellte Datei incl. Webzugriff.
http://www.zoll.de/DE/Fachthemen/Zoelle/Zollwert/Aktuelle-Wechselkurse/Datenbankanwendung/datenbankanwendung_node.html?kursart=1&sort=asc&enddate=30.06.2018&spalte=gueltigkeit&startdate=01.06.2018
https://www.herber.de/bbs/user/122346.xlsx
Danke für eure Hilfe.

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abrufen von Monatlichen Zollkursen
27.06.2018 12:42:49
Monatlichen
Hallo Meiko,
kann es daran liegen, dass sich der Link aendert, wenn man auf der Seite auf "Kurse anzeigen" klickt?
AW: Abrufen von Monatlichen Zollkursen
27.06.2018 12:56:23
Monatlichen
Nein also daran lags nicht, denn auch wenn du mit dem anderen Link die Seite aufrufst, werden by default immer nur diese 5 Laender angezeigt. Es muss immer der Button "Kurse anzeigen" geklickt werden, damit die komplette Liste angezeigt wird. Ich weiss leider nicht, wie das mit Power Query zu loesen ist.
AW: Abrufen von Monatlichen Zollkursen
27.06.2018 12:56:26
Monatlichen
Hi,
kann durchaus sein. jedoch ist mir nicht bekannt wie ich dann den "neuen" Link bekomme. Kopiere den immer aus der Webadressleiste bzw. rechts Maus-Link-Adresse kopieren. Im Quelltext habe ich auch keinen Link gefunden.
Aber bin auch kein HTML-Experte
Anzeige
AW: Abrufen von Monatlichen Zollkursen
27.06.2018 13:09:06
Monatlichen
Hallo nochmal,
habe etwas gefunden. Lies mal da. Sieht so aus, als muesstest du da einiges manuell erledigen.
Ich hab nicht alles gelesen, sieht aber nach einer Loesung deines Problems aus.
http://www.excel-ist-sexy.de/web-import-mit-umwegen/
AW: Abrufen von Monatlichen Zollkursen
27.06.2018 13:19:52
Monatlichen
So, ich hab das jetzt mal so gemacht, wie der Kollege das dort beschreibt.
Funktioniert. Aber leider muss man jetzt immer die aktualisierte Webseite "sichern als" in dieses angelegte Verzeichnis, nachdem man den Button auf der Seite betaetigt hat.
AW: Abrufen von Monatlichen Zollkursen
27.06.2018 14:00:13
Monatlichen
Hi,
ok das hilft schon mal ein wenig. Doch wäre eine "automatisierte" Lösung schöner, da nicht alle Kollegen Excel und Internet-Sicher sind.
Aber schon für deine Bemühungen danke.
Anzeige
AW: Abrufen von Monatlichen Zollkursen
27.06.2018 14:29:13
Monatlichen
Hi,
hab einen Link gefunden, vielleicht hilft der weiter...

https://www.bmf.gv.at/zoll/Kassenwerte_Zollwertkurse.html#Kassenwerte
Hier eine Musterdatei: https://www.herber.de/bbs/user/122351.xlsx
AW: Abrufen von Monatlichen Zollkursen
27.06.2018 14:40:26
Monatlichen
Hallo nochmal,
mir kam gerade noch was in den Sinn. Muss es unbedingt diese Seite sein, von der du die Kurse bekommst?
Gibt doch auch andere Seiten, wo du sogar tagesaktuell die Kurse bekommst. Wie z. B.
https://wechselkurse-euro.de/
Wenn das funktioniert, dann kannst du ja auch noch die Aktualisierung automatisieren, in dem du einen VBA code nimmst, der das uebernimmt. Dann wird bei jedem Oeffnen der Datei aktualisiert.
Anzeige
AW: Abrufen von Monatlichen Zollkursen
27.06.2018 14:01:14
Monatlichen
Hi,
einzige Möglichkeit, die ich sehe, ist auf der Webseite den Download der CSV-Datei "Ausgewählte notierte Währungen" von Hand auf Festplatte zu speichern und anschließend in Excel per CSV-Abfrage in dein Tabellenblatt einzufügen.
Userbild
Office Version 2016 Pro 32bit - Windows10 Pro 64 bit
"Wenn du jemanden ohne Lächeln triffst, schenke ihm dein's!"
AW: Abrufen von Monatlichen Zollkursen
27.06.2018 14:39:01
Monatlichen
Hallo Bernd,
man kann eine CSV auch automatisiert runterladen und dann verarbeiten. In diesem Fall bringt das aber nix. Ohne den Button "Kurse anzeigen" anzuklicken, stehen in der CSV sonst auch nur die ersten 5 Kurse drin. Ich habe es ausprobiert. Da man um den Button zu klicken, den Internet Explorer bemühen muss, kann man die Daten dann auch direkt von der Seite abgreifen.
Viele Grüße,
Zwenn
Anzeige
AW: Abrufen von Monatlichen Zollkursen
27.06.2018 14:53:02
Monatlichen
Hallo Zwenn,
Danke für deine Erklärung. Ich habe ein ähnliches Problem und zwar mit folgendem Link:
https://www.ariva.de/thyssenkrupp-aktie/historische_kurse
dort schaffe ich es nicht am Ende der Seite den Zeitrahmen auf Heute minus drei jahre zu setzen und die CSV zu downloaden.
Kannst due mir da helfen?
Wäre dir sehr dankbar!!!
Userbild
Office Version 2016 Pro 32bit - Windows10 Pro 64 bit
"Wenn du jemanden ohne Lächeln triffst, schenke ihm dein's!"
Anzeige
AW: Abrufen von Monatlichen Zollkursen
27.06.2018 15:14:31
Monatlichen
Hallo Zwenn,
danke für das Modul.
Doch bekomme ich eine Fehlermeldung die ich leider nicht beheben kann.
Laufzeitfehler ´-2147023179 / Automatisierungsfehler, Schnittstelle nicht bekannt.
Beim Debuggen zeigt er mir folgenden Part an.
"Do Until browser.readyState = 4"
Hinweis wir nutzen normalerweise Chrome als Standard Browser.
Wir arbeiten über Citrix auf einer Windows Platform. (Igel)
AW: Abrufen von Monatlichen Zollkursen
27.06.2018 15:58:49
Monatlichen
Hallo Bernd,
die Daten einzutragen sollte zwer unproblematisch sein und auch den Downloadbutton anzuklicken geht. Das nutzt Dir aber nix, denn dann geht der Download-Dialog auf und soweit ich weiß, kann man den nicht fernsteuern. Um also eine CSV via VBA runterladen zu können, braucht man den direkten Link zur CSV Datei.
Früher konnte man solche Informationen, wie einen zur Laufzeit der Seite generierten Link, mit WireShark abgreifen. Damit liest man den Netzwerkverkehr mit. Inzwischen sind aber die meisten Seiten statt über das http, nur noch über das https zu erreichen. Dabei wird der Netzwerkverkehr komplett verschlüsselt.
Ich habe also im Moment keine Idee, wie Dein Problem zu lösen ist.
Viele Grüße,
Zwenn
Anzeige
Mal wieder über das DOM
27.06.2018 14:35:21
Zwenn
Hallo Meiko,
folgenden Code in ein Modul:

Sub ZollKurseHolen()
Dim browser As Object
Dim url As String
Dim knoten As Object
Dim knotenStamm As Object
Dim knotenAst As Object
Dim knotenZweig As Object
Dim knotenBlatt As Object
Dim spalte As Byte
Dim zeile As Byte
Dim i As Byte
Dim nummernCheck As String
'Davon ausgehend, dass als Datumsgrenzen immer der aktuelle Monat gewählt wird
'kann man die ganzen Parameter im Link weglassen
url = "http://www.zoll.de/SiteGlobals/Forms/KursSuche/KurseSuche_Formular_NotierteWaehrung.html" _
'Internet Explorer initialisieren und Sichtbarkeit festlegen
Set browser = CreateObject("internetexplorer.application")
browser.Visible = True
'Seite im IE aufrufen und warten bis sie vollständig geladen ist
browser.navigate url
Do Until browser.readyState = 4: DoEvents: Loop
'Button "Kurse anzeigen" suchen, anklicken und
'5 Sekunden warten um die Seite neu zu laden
Set knotenAst = browser.document.getElementsByClassName("submit")(0)
If Not knotenAst Is Nothing Then
knotenAst.Click
Application.Wait (Now + TimeSerial(0, 0, 5))
Do Until browser.readyState = 4: DoEvents: Loop
Else
MsgBox "Der Button 'Kurse anzeigen' wurde nicht gefunden"
Exit Sub
End If
'Kopfzeile schreiben
Cells(1, 1).Value = "Land"
Cells(1, 2).Value = "ISO-Alpha-2 Code"
Cells(1, 3).Value = "1 EUR ="
Cells(1, 4).Value = "ISO-Alpha-3 Code"
Cells(1, 5).Value = "Gültigkeit"
Cells(1, 6).Value = "Anmerkungen"
'Werte auslesen und in die Tabelle schreiben
Set knotenStamm = browser.document.getElementsByTagName("tbody")(0)
If Not knotenStamm Is Nothing Then
Set knotenAst = knotenStamm.getElementsByTagName("tr")
spalte = 1
zeile = 2
For Each knotenZweig In knotenAst
'Land auslesen
Set knotenBlatt = knotenZweig.getElementsByTagName("th")(0)
Cells(zeile, spalte).Value = knotenBlatt.innertext
Cells(zeile, spalte).Value = Trim(Cells(zeile, spalte).Value)
spalte = spalte + 1
'Rest auslesen
Set knotenBlatt = knotenZweig.getElementsByTagName("td")
For Each knoten In knotenBlatt
nummernCheck = knoten.innertext
If IsNumeric(Trim(nummernCheck)) Then
Cells(zeile, spalte).Value = Trim(nummernCheck) * 1
Else
Cells(zeile, spalte).Value = Trim(nummernCheck)
End If
spalte = spalte + 1
Next knoten
spalte = 1
zeile = zeile + 1
Next knotenZweig
Else
MsgBox "Es wurden keine Kursdaten gefunden"
Exit Sub
End If
End Sub

Ich habe den IE geöffnet gelassen. Wenn Dich das nervt, kann man ihn auch am Ende schließen. Er muss auch nicht zwingend eingeblendet sein, während das Makro läuft. Blende ihn jetzt aber nicht aus, solange er nicht automatisch geschlossen wird. der bleibt sonst im Speicher und kann nur über den TaskManager geschlossen werden. Ich habe das erstmal so gemacht, damit Du eine Sichtkontrolle hast.
Schick machen musst Du Dir die Tabelle selbst ;-)
Viele Grüße,
Zwenn
Anzeige
AW: Mal wieder über das DOM
27.06.2018 15:16:10
Meiko
Hallo Zwenn,
danke für das Modul.
Doch bekomme ich eine Fehlermeldung die ich leider nicht beheben kann.
Laufzeitfehler ´-2147023179 / Automatisierungsfehler, Schnittstelle nicht bekannt.
Beim Debuggen zeigt er mir folgenden Part an.
"Do Until browser.readyState = 4"
Hinweis wir nutzen normalerweise Chrome als Standard Browser.
Wir arbeiten über Citrix auf einer Windows Platform. (Igel)
AW: Mal wieder über das DOM
27.06.2018 15:49:48
Zwenn
Hallo Meiko,
wird der Internet Explorer denn geöffnet? Wie das über Citrix läuft weiß ich nicht. Bei mir auf einem normalen Windows 10 PC läuft das Makro klaglos durch.
Fernsteuern lässt sich von den Browsern nur der Internet Explorer, da man aus VBA heraus die sogenannte COM-Schnittstelle verwendet, um andere Programme zu steuern. Chrome und Co. stellen eine solche jedoch nicht zur Verfügung.
Jetzt ist erstmal Fußball :-)
Viele Grüße,
Zwenn
Anzeige
AW: Mal wieder über das DOM
28.06.2018 07:41:59
Meiko
Hallo Zwenn,
ja der IE öffnet sich und die Seite wird auch geladen.
Da der Befehl aber vorm Button-Druck ist passiert nichts weiter.
Kan mann die Zeile löschen oder eine Warteschleife von 20 Sekunden einbauen ?
AW: Mal wieder über das DOM
28.06.2018 08:01:58
Meiko
Hallo Zwenn,
Nachtrag: Meine Änderung:
'Seite im IE aufrufen und warten bis sie vollständig geladen ist
browser.navigate url
Application.Wait (Now + TimeSerial(0, 0, 20))
Nun stop er bei :
'Button "Kurse anzeigen" suchen, anklicken und
'5 Sekunden warten um die Seite neu zu laden
Set knotenAst = browser.document.getElementsByClassName("submit")(0)
Was mir aufgefallen ist als ob er "2x" den IE öffnet und 1x wieder schließt. Zum schluss habe ich nur 1 offen.
Anzeige
AW: Mal wieder über das DOM
28.06.2018 12:52:35
Zwenn
Hallo Meiko,
das Verhalten kann ich nicht nachvollziehen. Die Zeile, die Du durch eine feste Pause von 20 Sekunden ersetzt hast, wartet nur darauf, dass der IE den Zustand "Dokument vollständig geladen" zurückliefert. Das ist durch die 4 kodiert. Das begrenzt die Pause also einfach nur auf die Zeit, die wirklich benötigt wird.
In der Zeile, von der Du schreibst "Nun stop er bei :", wird im HTML Code nach Elementen gesucht, die mit der CSS Klasse submit formatiert werden. Davon gibt es zwei Stück. die Angabe (0) am Ende der Zeile sagt dem Makro, es soll das erste gefundene Element in die Variable KnotenAst übernehmen.
Da diese Zeile nicht ausgeführt wird, liegt das Problem ganz sicher nicht im Code, sondern an der Umgebung, in der Du ihn laufen lässt. Wie lautet denn die Fehlermeldung diesmal?
Hast Du die Möglichkeit, das Makro mal auf einem WIndows Rechner ohne Citrix umgebung laufen zu lassen? Neben Citrix als möglicher Fehlerquelle kann es auch sein, dass es mit Verweisen innerhalb von Excel zusammenhängt. Davon habe ich aber wenig Ahnung und habe deshalb keinen Ansatz, nach was Du da Ausschau halten müsstest.
Das Makro öffnet den IE nur einmal und schließt ihn gar nicht. Ein Schließen ist im Code auch gar nicht vorgesehen. Wenn das Makro normal läuft, dann zuckt der geöffnete IE nur einmal, wenn der Button geklickt wurde und die Seite neu geladen wird. Aber da kommst Du bisher gar nicht hin.
Noch ein Hinweis: Das Makro schreibt die geholten Werte in die aktuell geöffnete Tabelle, ab Zelle A1. Es wird nicht geprüft, ob in der Tabelle etwas drinsteht.
Viele Grüße,
Zwenn
AW: Mal wieder über das DOM
28.06.2018 13:17:21
Meiko
Mh.
Probiere es mal von zu hause.
Sag mal morgen bescheid.
AW: Mal wieder über das DOM
28.06.2018 21:00:56
Zwenn
Hallo Meiko,
da Du sagtest, es sieht so aus, als ob der IE ein zweites Mal geöffnet wird, habe ich nochmal nachgedacht. Dann wäre der erste vom Makro geöffnete IE weg. Sollte das aus irgend einem unerfindlichen Grund so sein, würde die Variable browser nix mehr enthalten, worauf der Folgecode zugreifen könnte und dann würde ich das von Dir beschriebene Verhalten erwarten.
Mein Nachdeneken hat auch zu einem Ergebnis geführt ;-) Nachdem der Browser das erste Mal die Seite lädt, kann er unter allen geöffneten Programmen einfach (wieder) gesucht werden. Sollte er verloren gegangen sein, weil eine andere Instanz geöffnet wurde, wird er nun vom aktualisierten Makro wieder "eingefangen". Auf meinem Rechner sind nach Abschluss des Makros deshalb 2 IE Instanzen geöffnet gewesen (bei mir geht er halt nicht verloren, aber der Code muss in beiden Fällen laufen), von denen nur eine sichbar war. Deshalb habe ich jetzt doch das Schließen des Browsers mit eingebaut und setze auch alle Objektvariablen zurück. Deshalb wirkt der Code etwas aufgebläht. Vor allem auch, weil das an drei Stellen passieren muss. Ginge auch anders, aber ich verwende kein GoTo ;-)
Probiere mal aus, ob das so bei Dir läuft. Ich habe Deine 20 Sekunden für das Warten auf das vollständige Laden des Dokuments auf 5 Sekunden herab gesetzt. Musst Du evtl. wieder anpassen. Danach wird der Browser neu gesucht. Wenn das durchläuft und der Button angeklickt wird, wie Programmiert, ist das schonmal gut. Sollte das Makro dann bei der zweiten Pause, bzw danach, wieder aussteigen, muss an der Browser an der Stelle auch nochmal gesucht werden. Ich gehe aber erstmal davon aus, das der Klick auf einen Button keine neue Browser Instanz auslöst. Sofern diese Idee überhaupt im Ansatz richtig sein sollte.
Hier ist der angepasste Code:

Sub ZollKurseHolen()
Dim objShell As Object
Dim browserSuchen As Object
Dim browser As Object
Dim url As String
Dim knoten As Object
Dim knotenStamm As Object
Dim knotenAst As Object
Dim knotenZweig As Object
Dim knotenBlatt As Object
Dim spalte As Byte
Dim zeile As Byte
Dim nummernCheck As String
'Davon ausgehend, dass als Datumsgrenzen immer der aktuelle Monat gewählt wird
'kann man die ganzen Parameter im Link weglassen
url = "http://www.zoll.de/SiteGlobals/Forms/KursSuche/KurseSuche_Formular_NotierteWaehrung.html" _
'Internet Explorer initialisieren und Sichtbarkeit festlegen
Set browser = CreateObject("internetexplorer.application")
browser.Visible = True
'Seite im IE aufrufen und warten bis sie vollständig geladen ist
browser.Navigate url
Application.Wait (Now + TimeSerial(0, 0, 5))
'IE neu suchen, falls verloren gegangen
Set objShell = CreateObject("Shell.Application")
For Each browserSuchen In objShell.Windows
If InStr(1, UCase(browserSuchen.FullName), "IEXPLORE") > 0 Then
If browserSuchen.Document.Location = url Then
Exit For
End If
End If
Next
'Button "Kurse anzeigen" suchen, anklicken und
'5 Sekunden warten um die Seite neu zu laden
Set knotenAst = browserSuchen.Document.getElementsByClassName("submit")(0)
If Not knotenAst Is Nothing Then
knotenAst.Click
Application.Wait (Now + TimeSerial(0, 0, 5))
'Do Until browserSuchen.readyState = 4: DoEvents: Loop
Else
MsgBox "Der Button 'Kurse anzeigen' wurde nicht gefunden"
'Aufräumen und beenden
If Not browser Is Nothing Then
browser.Quit
End If
If Not browserSuchen Is Nothing Then
browserSuchen.Quit
End If
Set browser = Nothing
Set browserSuchen = Nothing
Set knotenStamm = Nothing
Set knotenAst = Nothing
Set knotenZweig = Nothing
Set knotenBlatt = Nothing
Set knoten = Nothing
Exit Sub
End If
'Kopfzeile schreiben
Cells(1, 1).Value = "Land"
Cells(1, 2).Value = "ISO-Alpha-2 Code"
Cells(1, 3).Value = "1 EUR ="
Cells(1, 4).Value = "ISO-Alpha-3 Code"
Cells(1, 5).Value = "Gültigkeit"
Cells(1, 6).Value = "Anmerkungen"
'Werte auslesen und in die Tabelle schreiben
Set knotenStamm = browserSuchen.Document.getElementsByTagName("tbody")(0)
If Not knotenStamm Is Nothing Then
Set knotenAst = knotenStamm.getElementsByTagName("tr")
spalte = 1
zeile = 2
For Each knotenZweig In knotenAst
'Land auslesen
Set knotenBlatt = knotenZweig.getElementsByTagName("th")(0)
Cells(zeile, spalte).Value = knotenBlatt.innertext
Cells(zeile, spalte).Value = Trim(Cells(zeile, spalte).Value)
spalte = spalte + 1
'Rest auslesen
Set knotenBlatt = knotenZweig.getElementsByTagName("td")
For Each knoten In knotenBlatt
nummernCheck = knoten.innertext
If IsNumeric(Trim(nummernCheck)) Then
Cells(zeile, spalte).Value = Trim(nummernCheck) * 1
Else
Cells(zeile, spalte).Value = Trim(nummernCheck)
End If
spalte = spalte + 1
Next knoten
spalte = 1
zeile = zeile + 1
Next knotenZweig
Else
MsgBox "Es wurden keine Kursdaten gefunden"
'Aufräumen und beenden
If Not browser Is Nothing Then
browser.Quit
End If
If Not browserSuchen Is Nothing Then
browserSuchen.Quit
End If
Set browser = Nothing
Set browserSuchen = Nothing
Set knotenStamm = Nothing
Set knotenAst = Nothing
Set knotenZweig = Nothing
Set knotenBlatt = Nothing
Set knoten = Nothing
Exit Sub
End If
'Aufräumen und beenden
If Not browser Is Nothing Then
browser.Quit
End If
If Not browserSuchen Is Nothing Then
browserSuchen.Quit
End If
Set browser = Nothing
Set browserSuchen = Nothing
Set knotenStamm = Nothing
Set knotenAst = Nothing
Set knotenZweig = Nothing
Set knotenBlatt = Nothing
Set knoten = Nothing
End Sub

Viele Grüße,
Zwenn
AW: Mal wieder über das DOM
29.06.2018 08:07:19
Meiko
Hi,
danke.
Hinweis. Zu haus hat das Marcro einwandfrei funktioniert.:Windows 10 mit Excel 2010
Und nun funktioniert auch das neue Marco.
Bekomme zwar immer noch die 1. Fehlermeldung aber das liegt daran das das erste Fenster einen Fehler verursacht.
Kann mann das irgendwie unterdrücken ?
Nichts desto trotz erstmal ein Button einfügen und so einrichten das die Daten immer nur in einem Tabellentab gespeichtert werden.
Und schon mal sehr vielen Dank.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige