• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Opgelost Koppeling maken met KNMI data platform in Excel

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

alidakuiper

Gebruiker
Lid geworden
9 jan 2024
Berichten
13
Ik zou graag de klimaat data vanuit KNMI automatische willen ophalen in excel.

Ik doe het nu elke keer handmatig vanuit https://daggegevens.knmi.nl/ naar csv. bestand.


Maar is het mogelijk om dit te doen via " gegevens ophalen " " van het web "

Ik heb ea geprobeerd maar kom er niet uit, weet iemand of hier een mogelijkheid voor is?

 
Je kan hierop gewoon een POST-request uitvoeren met de juiste inputgegevens:

Als je dit goed doet dan krijg je een JSON of CSV eruit met de benodigde data.
Voor hulp moet je even je browser-debugger erbij pakken en bij de network-tab kijken wat voor data er naar die URL gestuurd wordt. Met vrijwel elke programmeertaal kan je deze data ophalen.
 
Dat dacht ik ook maar staat wel Windows 10 bij en niet meer geschikt voor XP.
 
Dat dacht ik ook maar staat wel Windows 10 bij en niet meer geschikt voor XP.
Ik heb het programma niet getest. Allereerste is de laatste updatedatum 22-6-2016 wat al behoorlijk oud is, en voor de rest lijkt de oude interface (waar dit programma vermoedelijk op lijkt te draaien) offline te zijn.
 
Je kan hierop gewoon een POST-request uitvoeren met de juiste inputgegevens:

Als je dit goed doet dan krijg je een JSON of CSV eruit met de benodigde data.
Voor hulp moet je even je browser-debugger erbij pakken en bij de network-tab kijken wat voor data er naar die URL gestuurd wordt. Met vrijwel elke programmeertaal kan je deze data ophalen.
Ik gebruik office 365, maar hoe ik een POST-request uitvoer weet ik niet.
Ik heb al even gezocht, maar is hier ergens een goede uitleg van?
 
Ik gebruik office 365, maar hoe ik een POST-request uitvoer weet ik niet.
Ik heb al even gezocht, maar is hier ergens een goede uitleg van?
Ik heb nu de volgende code, alleen krijg ik hier een foutmelding op. Kan iemand zien wat er fout gaat?

Sub VoerPOSTRequestUit()
Dim url As String
Dim postData As String
Dim httpRequest As Object

' Vervang de URL door de daadwerkelijke API-endpoint
url = "https://www.daggegevens.knmi.nl/klimatologie/daggegevens"

' Vervang postData door de gegevens die je wilt verzenden
postData = "stns=249&vars=VICL:PRCP&start=20190101&end=20200818"

' Maak een WinHTTP-object aan
Set httpRequest = CreateObject("WinHttp.WinHttpRequest.5.1")

' Open de verbinding en configureer de request
httpRequest.Open "POST", url, False
httpRequest.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"

' Verzend de POST-data
httpRequest.Send postData

' Toon de status en het antwoord in een berichtvenster
MsgBox "Status: " & httpRequest.Status & vbCrLf & "Antwoord: " & httpRequest.ResponseText
End Sub
 
Goed op weg.
Welke foutmelding en response?
 
Kijk eens of dit in de richting komt.
Het e.e.a. gedaan met power query.
Deze kijk, als je op verversen klikt steeds, vandaag - 30 dagen terug.
Deze query is nu toepasbaar voor M'tricht maar kan ten alle tijden in de query aangepast worden.
 

Bijlagen

Kijk eens of dit in de richting komt.
Het e.e.a. gedaan met power query.
Deze kijk, als je op verversen klikt steeds, vandaag - 30 dagen terug.
Deze query is nu toepasbaar voor M'tricht maar kan ten alle tijden in de query aangepast worden.
ja SUPER.

Hier kan ik wat mee, ik ga even kijken of aanpassen lukt naar mijn wensen.

Bedankt!
 
  • Leuk
Waarderingen: Aar
Dat word toch even een stap te ingewikkeld voor mij denk ik...
Aanpassen naar juiste gegevens is gelukt.

Nu krijg ik in de cel alleen een aantal spaties voor de waarde, hierdoor kan ik de gegeven niet optellen.
Is er een mogelijkheid dat ik dit in de query aan kan passen?
 
Dat word toch even een stap te ingewikkeld voor mij denk ik...
Het hoeft niet ingewikkeld te zijn. Wat er precies gebeurt: KNMI levert een API aan waarmee je hun data via CSV, JSON of XML kan ophalen.
Het ophalen daarvan gaat aan de hand van de juiste data die je naar KNMI stuurt. je vraagt ze dus bij wijze van spreken: 'Geef mij de neerslag, luchtvochtigheid en de gemiddelde temperatuur van De Bilt.' Met Postman kan je dit eenvoudig uittesten.

Ik zag al dat je een statuscode 200 krijgt, en dat betekent dat de aanvraag van die URL geaccepteerd is. Je mist blijkbaar wel wat data die je naar ze stuurt omdat ik enkel wat gecommentariseerde code zag. Maar als je die data krijgt, dan moet je die nog netjes verwerken.
 
Een hele ruwe versie voor het slapen gaan.
In module Blad1
Haalt gegevens op van het station 377 Ell, van eergisteren en gisteren.
Code:
Public Sub KNMIPOST()

    With Range("A1").CurrentRegion

        .ClearContents

        sURL = "https://www.daggegevens.knmi.nl/klimatologie/daggegevens"
        sPOST = "stns=377&vars=VICL:PRCP&start=20240108&end=20240109"

        With CreateObject("msxml2.xmlhttp")
            .Open "POST", sURL, False
            .Send sPOST
            sResponseText = .responsetext
        End With
       
        vLines = Split(sResponseText, vbLf)
        For lRow = 0 To UBound(vLines) - 1
            vLine = Split(vLines(lRow), ",")
            Cells(lRow + 1, 1).Resize(, UBound(vLine) + 1).Value = vLine
        Next
       
        .Columns.AutoFit

    End With

End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan