Nicht über den Button
01.12.2017 00:58:38
Zwenn
Hallo Alen,
einmal quick and dirty, damit du einen Ansatz bekommst. Habe leider keinen Elan mehr für große Erklärungen. Nur soviel:
Man kann den Button zwar anklicken, das bringt Dir aber gar nix, denn dann erscheint der Download Dialog, in dem Du bestätigen musst, ob Du die Datei öffnen oder speichern willst. Diesen Dialog kann man meines Wissens nach nicht automatisieren. Deshalb braucht man den Link, der durch den Button ausgelöst wird. Den habe ich mit Wireshark ausgelesen. Wenn Du den direkt in einen Browser eingibst, erscheint der Download Dialog auch. Aber mit dem Link hast Du eine andere Möglichkeit.
Für die Lösung musst Du als erstes fogende VBA Funktion oben in einem Modul einfügen. Die wird verwendet, um Dateien direkt in ein Verzeichnis zu speichern. Damit hast Du dann auch automatisch die Hoheit über die Namensgebung und den Speicherpfad:
Private Declare 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
Anschließend brauchst Du ein Makro, das die Funktion mit den benötigten Parametern ausführt:
Sub CSVrunterladen()
Dim url As String
Dim urlTeil1 As String
Dim urlTeil2 As String
Dim urlTeil3 As String
Dim geladen As Long
Dim speicherPfad As String
Dim csvName As String
urlTeil1 = "http://www.ariva.de/quote/historic/historic.csv"
urlTeil2 = "?secu=868420&boerse_id=12&clean_split=1&clean_payout=0&clean_bezug=1"
urlTeil3 = "&min_time=30.11.2016&max_time=30.11.2017&trenner=%3B&go=Download"
url = urlTeil1 & urlTeil2 & urlTeil3
speicherPfad = "E:\Dokumente\"
csvName = "Test2.csv"
geladen = URLDownloadToFile(0, url, speicherPfad & csvName, 0, 0)
End Sub
Die URL habe ich grob in drei Teile zerhackt, damit sie nicht automatisch von der Forensoftware umgebrochen wird. Wie Du siehst, enthält sie eine Parameterliste. Unter anderem kannst Du das Makro so erweitern, dass die Datumsgrenzen für die beiden Parameter &min_time= und &max_time= immer Deinen Wünschen entsprechend angepasst werden.
Es gibt als ersten Parameter ?secu=868420. Klingt für mich nach Security und es kann sein, dass der Wert hinter dem Gleichheitszeichen eine SeassionID oder sowas ist. Im Zweifelsfall musst Du diese Nummer kennen, bevor das Makro die Datei runterladen kann. Ob es so ist, kann ich nicht sagen. Bei mir hats mit dem Link funktioniert, wie er dasteht. Aber die Nummer kann auch nach einer gewissen Zeit verfallen. Musst Du austesten.
Falls ja, kann dieser Wert aus der HTML Seite ausgelesen werden. Alle Parameter sind hinterlegt. Aber darauf nehme ich jetzt keinen Bezug mehr. Hier nur noch der Auszug, wie die Parameter auf der Seite hinterlegt sind:
<form action="/quote/historic/historic.csv " method="get " name="histcsv ">
<input name="secu " value="868420 " type="hidden ">
<input name="boerse_id " value="12 " type="hidden ">
<input name="clean_split " value="1 " type="hidden ">
<input name="clean_payout " value="0 " type="hidden ">
<input name="clean_bezug " value="1 " type="hidden ">
<ul style="margin: 5 px;">
<li>
<label for="minTime ">von:</label>
<input id="minTime " name="min_time " value="30.11 .2016 " style="width: 71 px ">
</li>
<li>
<label for="maxTime ">bis:</label>
<input id="maxTime " name="max_time " value="30.11 .2017 " style="width: 71 px ">
</li>
<li>
<label for="trenner ">Trennzeichen:</label>
<input id="trenner " name="trenner " value=";" style="width: 25 px "> </li>
<li>
Ab jetzt bin ich auch bis Dienstag Abend nicht mehr im Forum, da ich ab morgen unterwegs bin. Wie gesagt, nimm es als Einstieg, um damit weiterzuarbeiten. Im Zweifelsfall gibt es hier andere gute Leute, von denen Dir evtl. jemand weiterhilft.
Viele Grüße,
Zwenn