Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1592to1596
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

IE bedienen mit VBA

IE bedienen mit VBA
30.11.2017 10:00:44
Alen
Hallo zusammen,
kann mir bitte jemand mit meinem Problem helfen.
Ich möchte gerne die Seite
http://www.ariva.de/x-dax-index/historische_kurse
aus Excel aufrufen und den "Download"-Button unten rechts bei "Kurse als CSV-Datei" gerne automatisiert klicken.
Die Datei die dann auf meinem Rechner liegt hat einen Namen, diesen Namen möchte ich in Excel ebenfalls erkennen, damit ich die Daten aus dem Download in eine andere Excel-Datei übernehmen kann.
Vielen Dank für eure Hilfe.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
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
Anzeige
AW: Nicht über den Button
01.12.2017 15:09:35
Alen
Hallo Zwenn,
ich schaue mir das in den nächsten Tagen an. Aber schon jetzt ein großes DANKE für deine umfangreiche Antwort.
Gruß
Alen
AW: Nicht über den Button
06.12.2017 11:31:02
Alen
Vielen Dank es hat funktioniert
Gern, schön dass es klappt :-) (owT)
06.12.2017 15:47:41
Zwenn

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige