![]() |
Wetterdaten aus dem Web importieren in Form einer Zip - Druckversion +- Office-Fragen.de (https://office-fragen.de) +-- Forum: Microsoft Office (https://office-fragen.de/forum-1.html) +--- Forum: Excel (https://office-fragen.de/forum-2.html) +--- Thema: Wetterdaten aus dem Web importieren in Form einer Zip (/thread-2095.html) Seiten:
1
2
|
Wetterdaten aus dem Web importieren in Form einer Zip - Niko - 14.08.2019 Hallo zusammen! Wie der Name des Beitrags vielleicht schon verrät suche ich eine Lösung um Daten aus Web in Excel einzubinden. Diese Daten sind vergangene Wetterdaten, die immer weiter aktualisiert werden und in Form einer Zip Datei heruntergeladen werden kann. Ich möchte das ganze gerne automatisieren, sodass man in meiner Excell Mappe später immer alle Wetterdaten aktualisiert zur Verfügung hat, sprich vergangen Werte aber auch aktuelle. Ich kenne die Funktion Daten aus dem Web einfügen von Excel, jedoch hab ich es noch nicht realisiert bekommen dort in irgendeiner Form die Daten einzupflegen. Die Website lautet: https://www.dwd.de/DE/Home/home_node.html Diese besitzt auch enen OpenData bereich, falls es irgendwie weiterhilft: https://opendata.dwd.de/climate_environment/CDC/observations_germany/climate/hourly/air_temperature/historical/ Dieser Link führt zu den einzelnen Wetterstation die sich jeweils hinter einer Zip datei befindet. Mein bisheriges googeln war leider nicht erfolgreich, was auch daran liegt, dass ich nicht genau weiß, wonach ich genau googeln soll um mein Problem zu lösen. Wie gesagt ich kenne die Funktion Daten abrufen aus dem Web aber jedesmal wenn ich da irgendeinen Link einfüge erkennt Excel keinerlei Datei oder Tabelle, die man importieren könnte. Es gibt eine Excel-Sheet, dass die beschriebene Funktion benutzt, leider ist diese Mappe aber Passwort geschützt, was das nachvollziehen erschwert. Hier der Link zur Datei: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=2ahUKEwjWkImGtYLkAhUII1AKHT9PAAMQFjABegQIARAC&url=https%3A%2F%2Fwww.iwu.de%2Ffileadmin%2Fuser_upload%2Fdateien%2Fenergie%2Fwerkzeuge%2FGradtagszahlen_Deutschland.xls&usg=AOvVaw00IQ-uDPjw46vGSXm2n3tK Ich bedanke mich im voraus für jegliche Hilfe! Gruß Niko RE: Wetterdaten aus dem Web importieren in Form einer Zip - maninweb - 14.08.2019 Hallo, schönes Thema, erinnert mich an meinen Artikel für die c't (Heise) und einen Vortrag an der FH Aachen vor längerer Zeit, wo eben Wetterdaten vom DWD ausgewertet wurden :-) Ich kann dazu empfehlen, Power Query zu verwenden, um die entpackten TXT's oder CSV's aus den Zip-Dateien aus einem Ordner auszulesen. Damals verwendete ich Dateien in der Form produkt_monat_Monatswerte_19000101_19770630_04933.txt. Die Stationen waren in einer separaten Datei zu finden. Auch wenn es jetzt in dem Artikel bei der c't darum ging, Excel-Daten auf animierten Landkarten visualisieren, könntest Du ggf. auf den Power Query Abfragen aufbauen. Den Artikel findest Du hier Profi-Geo-Diagramme (kostenpflichtig) und die kostenlose, frei zugängliche, Beispieldatei hier Webcode: ct.de/yj23. Gruß RE: Wetterdaten aus dem Web importieren in Form einer Zip - Niko - 16.08.2019 Hallo, Danke für die Antwort. Verstehe ich das richtig, dass die Funktion Power Query dann die Zip Datei eigenständig im Hintergrund runterlädt, entpackt und meine gewünschten Daten in Excel einpflegt? Weil genau dieser Vorgang soll realisiert und automatisiert werden. Die Datei, die ich verwende ist im Grunde ja so ähnlich, heißt z.B. produkt_tu_stunde_19690701_20171231_01078.txt. Ich möchte halt am liebsten, dass Excel mir alle Daten von allen Wetterstationen bereitstellt und der Nutzer meines Tools dann nur den Zeitraum der Messdaten (in meinem Fall wäre das dann immer ein ganzes Jahr) und die richtige Station auswählen muss. Da ich mich mit der Funktion Power Query noch nicht auskenne, hilft mir Ihr Excel-sheet gerade nicht weiter aber danke trotzdem! Ich glaube das erste Was ich jetzt tun muss und werde ist, mich mit der Funktion erstmal auseinanderzusetzen. Vielen Dank für die Hilfe RE: Wetterdaten aus dem Web importieren in Form einer Zip - maninweb - 17.08.2019 Hallo, nein, Power Query lädt die Dateien nicht erstmal selbstständig herunter und/oder entpackt diese. Möglicherweise ginge das über einen aufwändigeren M-Code, der Abfragesprache für Power Query, nicht aber nur über die Oberfläche. Das manuelle Herunterladen und in denselben Ordner Entpacken, wo die anderen Dateien liegen, sowie eine Aktualisierung der Abfrage in Excel wäre aber dann mithilfe von PQ erstmal das Einzige, was nicht automatisch wäre. Es spricht auch nichts gegen eine Kombination Power Query und VBA. Generell sind die Daten vom DWD leider nicht optimal für die Verwendung durch Excel bzw. Power Query aufbereitet und m.W. eher für spezialisierte Wetteranwendungen gedacht. Aber Power Query ermöglicht das sinnvolle Transformieren und Zuordnen der Daten. Es ist in jedem Fall sinnvoll, sich mit den Möglichkeiten von Power Query zu beschäftigen. Gruß RE: Wetterdaten aus dem Web importieren in Form einer Zip - Fennek - 20.08.2019 Hallo, nach einem ersten Blick in eine der Dateien: ein automtisierter Update sollte möglich sein, ist aber recht kompliziert! - Aus dem Quelltext der genannte Seite kann (einmalig) die Name der zip-Dateien ausgelesen werden - die Dateien können mit einer API "UrlMon" download werden - in VBA mit "Namespace" kann das zip-Archiv geöffnet und die txt-Datei extrahiert werden - Öffnen der Txt und suchen der neuesten Werte ist dagegen eher einfach Also wenn du in VBA fit bist und einige Stunden inverstierst, sollte es gehen. mfg RE: Wetterdaten aus dem Web importieren in Form einer Zip - Niko - 22.08.2019 Danke für die vielen Vorschläge! Also ich bin soweit in VBA fit, dass ich das seit ca. einem halben Jahr nutze und mir eigentlich bis jetzt meine Lösungen immer zusammen gegoogelt habe. Ich weiß zwar nicht, was die ganzen Abkürzungen (API "UrlMon") bedeuten aber auch hier wird mir googel bestimmt weiterhelfen. Danke erstmal für eure Hilfe! Grüße RE: Wetterdaten aus dem Web importieren in Form einer Zip - Niko - 22.08.2019 Ich habe jetzt mir einen Code zusammengegoogelt, weil ich das auf anhieb nicht selber hingekriegt habe. Jedoch tut sich garnichts wenn ich dn Code ausführe. Es kommt nicht einmal eine Fehlermeldung. Hier der entsprechende Code. Link: https://www.vba-hexerei.de/2017/07/14/hyperlink-per-makro-oeffnen-und-datei-herunterladen/ Option Explicit Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" _ Alias "URLDownloadToFileA" ( _ ByVal pCaller As Long, _ ByVal szURL$, _ ByVal szFileName$, _ ByVal dwReserved As Long, _ ByVal lpfnCB As Long) As Long Sub HyperLinkKopieren() Dim Hl As Hyperlink Dim rngBereich As Range 'Bereich, der nach Hyperlinks durchsucht wird Dim strQuellDat As String 'Pfad + Datei, die kopiert werden soll Dim strDatName As String 'Dateiname bei Dateien, die im Internet stehen 'Speicherort angeben Const strPfad As String = "C:" '<--- anpassen! - mit Backslash "\" abschließen! 'Existiert der Speicherort? If Dir(strPfad, vbDirectory) = "" Then MsgBox "Der angegebene Pfad ist ungültig!" & vbLf & vbLf & _ "Bitte richtigen Pfad im Code angeben!" & vbLf & vbLf & _ "Das Makro bricht ab!" Exit Sub End If 'Bereich, der nach Hyperlinks durchsucht wird angeben: With ThisWorkbook.Worksheets("Tabelle1") '<--- anpassen! Set rngBereich = .Range("A1:L20") '<--- anpassen! End With 'Schleife über alle Hyperlinks in diesem Bereich For Each Hl In rngBereich.Hyperlinks strQuellDat = Hl.Address 'Quelldatei Debug.Print "Quelldatei : " & strQuellDat If LCase(Left(strQuellDat, 4)) = "http" Then 'Quelldatei online strDatName = Split(strQuellDat, "/")(UBound(Split(strQuellDat, "/"))) 'Dateiname Debug.Print URLDownloadToFile(0, strQuellDat, strPfad & strDatName, 0, 0) 'herunterladen Else 'Quelldatei offline FileCopy strQuellDat, strPfad & Dir(strQuellDat, vbNormal) 'Speichern unter End If Next 'aufräumen: Set rngBereich = Nothing Set Hl = Nothing End Sub Hier noch ein anderer kürzerer Code, den ich auch nicht zum laufen bringen kann. Er zeigt auch keine Wirkung, nichtmal eine Fehlermeldung. Option Explicit Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" _ Alias "URLDownloadToFileA" ( _ ByVal pCaller As Long, _ ByVal szURL As String, _ ByVal szFileName As String, _ ByVal dwReserved As Long, _ ByVal lpfnCB As Long) As Long Public Sub machs() Dim dieUrl As String Dim dasZiel As String Dim myResult dieUrl = "https://opendata.dwd.de/climate_environment/CDC/observations_germany/climate/daily/kl/historical/tageswerte_KL_00001_19370101_19860630_hist.zip" dasZiel = "C:" myResult = URLDownloadToFile(0, dieUrl, dasZiel, 0, 0) End Sub Grüße RE: Wetterdaten aus dem Web importieren in Form einer Zip - maninweb - 24.08.2019 Hallo, versuche es mal mit folgendem Code ... Code: Option Explicit Dem Downloadziel sollte ein Dateiname mit übergeben werden. apiDeleteCache löscht zuvor den Cache für die URL. Ausserdem sollte nicht direkt auf C: heruntergeladen werden, kann sein, dass Windows das unterbindet. Code prüft hier nicht, ob die Datei bereits vorhanden ist. Gruß RE: Wetterdaten aus dem Web importieren in Form einer Zip - Niko - 01.10.2019 Hallo maninweb , danke für die Antwort. Ich habe den Code implementiert jedoch bleibt der Downloadordner weiterhin leer. Es kommt aber keine Fehlermeldung von Excel. Ich muss den Downloadordner in C wählen, weil mein Laptop nur eine Partition hat. Außerdem weiß ich nicht genau wo bzw. wie ich ich dem Downloadziel einen Dateinamen mit übergebe. Was müsste ich denn tun, damit die alte Datei mit der neuen einfach ersetzt wird? Somit könnte ich sichergehen, dass beim Starten der Excel-Datei jedesmal die aktuellsten Daten heruntergeladen werden und aktualisiert sind. Danke im voraus für die Hilfe! Niko RE: Wetterdaten aus dem Web importieren in Form einer Zip - maninweb - 03.10.2019 Hallo, der Code aus meine letzten Beitrag funktioniert bei mir einwandfrei. Ich kann auch z.B. C:\MeinDownloadOrdner verwenden; ich schlage vor, einen eigenen Ordner dafür zu nehmen (also nicht den Standard-Windows-Download-Ordner). Der Dateiname ist in dem Part hier ... StrReverse(Split(StrReverse(dieUrl), "/")(0)). Das kannst Du durch einen eigenen Code ersetzen, z.B. dasZiel = "C:\MeinDownloadOrdner\" & "MeineDatei.zip". Bei jedem erneuten Download - also einem erneuten Aufruf der Funktion - wird die vorherige Datei überschrieben. Warum das jetzt insgesamt bei Dir nicht geht, kann ich Dir leider nicht sagen. Möglich wäre z.B., dass eine Firewall den Zugriff von Excel auf das Internet blockt. Gruß |