Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dateien Download und umbenennen VBA

Dateien Download und umbenennen VBA
27.06.2019 22:00:37
Danny
Hallo zusammen,
Ausgangslage: Tabelle mit 2 Spalten. 1. Hyperlink/URL 2. Dateiname
Problem: die URL enthält keinen "harten" Pfad zu einer Datei, sondern löst beim Aufruf den Download einer Datei aus.
Ich will nun nacheinander die URLs aufrufen und in einem vorgegebenen Pfad unter dem Dateiname (Spalte 2) abspeichern.
Aber es will einfach nicht klappen. Es ist zu heiß...
Vielen Dank für die Hilfe.
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien Download und umbenennen VBA
27.06.2019 22:48:40
Danny
Wenn ich die Hyperlinks manuell "anklicke" startet der Download wie gewünscht aus dem Browser heraus.
URL-Aufbau: https://.../download.html?v=urn%...
Ich versuche es mit URLDownloadToFile(0, URL, Pfad&Dateiname, 0, 0)
Aber es will nicht...
AW: Dateien Download und umbenennen VBA
27.06.2019 22:56:19
onur
https://www.vb-helper.com/howto_download_url_to_file.html
Anzeige
AW: Dateien Download und umbenennen VBA
27.06.2019 23:17:37
Danny
Bei HL wie: http://www.vb-helper.com/vbhelper_425_64.gif klappt das problemlos.
Bei "weichen" URLs wie meinen https://www.abc.de/.../download.html?v=urn%...ID aber irgendwie nicht.
Habe gelesen, dass andere es hinbekommen haben, aber leider nicht wie.
Trotzdem vielen Dank.
Anzeige
AW: Dateien Download und umbenennen VBA
27.06.2019 23:36:59
onur
Du solltest dir den CODE dort anschauen, und nicht das Bild runterladen.
AW: Dateien Download und umbenennen VBA
27.06.2019 23:53:56
Danny
Na das ist mir schon klar... aber es funktioniert eben nicht! Mein Code ist genau so aufgebaut und läuft auch ohne strukturelle Fehler.
Als File-Download kommt aber eben nur eine "html" Seite und nicht die eigentliche Datei (sollte ein pdf sein).
Anzeige
AW: Dateien Download und umbenennen VBA
27.06.2019 23:59:42
Danny
Sorry, aber ich bin ja nicht dämlich...
NOCH MAL
Tief verlinkte URL laufen problemlos. Beispiel: https://www.herber.de/bbs/user/130622.xlsm
Indirekt verlinkte URL laufen NICHT. Beispiel: https://www.abc.de/.../download.html?v=urn%...00000-abc-12345
obwohl beim direkten klick der Download problemlos kommt.
Anzeige
AW: Dateien Download und umbenennen VBA
28.06.2019 00:10:17
onur
Ich war gerade auf:
https://www.abc.de/.../download.html?v=urn%...00000-abc-12345
Da wird nix automatisch downgeloaded - ich lande auf
https://gutenberg.abc.de/?v=urn%25...00000-abc-12345
AW: Dateien Download und umbenennen VBA
28.06.2019 00:40:57
Danny
Das war ja auch nur bei Beispiel wie die URLs, hinter denen meine Dateien liegen die ich herunterladen will, aufgebaut sind!
Vielleicht habe ich das nicht gründlich genug erklärt:
Reales Beispiel: https://www.mp3tag.de/dodownload.html
Beim direkten Aufruf/Klick wird die Datei mp3tagv295setup.exe heruntergeladen.
Beim Aufruf über VBA mit URLDownloadToFile wird die dodownload.html heruntergeladen.
DAS genau ist mein Problem, nur sehen meine URL anders aus, eben ähnlich diesem
Beispiel: https://www.BEISPIEL.de/download.html?v=urn%...00000-abc-12345
Anzeige
Die echte URL muss her
28.06.2019 08:04:30
Zwenn
Hallo Danny,
natürlich läd der Dir eine HTML-Datei runter, weil Du eine HTML-Datei aufrufst. Die wird ja auch angezeigt, wenn Du die URL in den Browser eingibst und die kommt nicht aus der Luft. Diese generiert dann selbständig eine Downloadanfrage für die gewünschte Datei an den Server. Das bedeutet, im HTML-Quellcode liegt vermutlich irgendwo die URL, die Du eigentlich ansteuern willst.
In dem nun von Dir verlinkten realen Beispiel liegt sie z.B. in Zeile 20 in einem Meta-Tag und nochmal in Zeile 84 in einem a-Tag im HTM-Quellcode der Seite https://www.mp3tag.de/dodownload.html.
Solange Du Deine echte URL nicht angibst, kann Dir kein Mensch helfen, weil der HTML-Quellcode Deiner gewünschten Seite völlig anders aufgebaut ist. Für das Runterladen von Daten von oder über Webseiten nutzen weder theoretische, noch echte Beispiele. Es MUSS die echte URL sein. Weil man sonst absolut gar keinen Ansatzpunkt hat.
Ich habe auf diese Weise hinterlegte Dateien noch nie automatisiert runtergeladen. Deshalb kann ich nicht sagen was passiert, wenn die Downloadanfrage während des Makrolaufs von der Seite ausgelöst wird. Rein theoretisch müsste das Makro so schnell den gewünschten Link rausholen, dass die Seite bereits vor dem Auslösen der Downloadanfrage wieder geschlossen wird.
Viele Grüße,
Zwenn
Anzeige
AW: Die echte URL muss her
28.06.2019 13:37:49
Danny
VIELEN DANK für die nette Erklärung. Das kann ich nachvollziehen.
Das komische ist, dass ich es einzeln mit einem Downloadmanager auch schon hinbekommen habe, aber eben nicht für eine Vielzahl von Dateien. Also muss es irgend einen Weg geben, so dass der Download per klick ausgelöst und dann automatisiert verarbeitet wird.
Die "echte" URL hilft dir nicht, denn man muss in Hintergrund angemeldet sein, sonst wird der Download nicht gestartet! Und ich kann verständlicherweise hier nicht die Zugangsdaten posten ;-))
Trotzdem vielen Dank!
Danny
Anzeige
AW: Die echte URL muss her
28.06.2019 14:59:01
Zwenn
Hallo Danny,
stimmt, das kannst Du nicht. Du kannst aber den HTML-Quelltext in einer .txt-Datei speichern und hier hochladen. Man braucht die 700 Zeilen Quelltext nicht von oben nach unten durchgehen. Schreib einfach dazu, was Du runterladen willst und dann sollte sich wenigstens ein Ansatz finden lassen.
Mit besten Grüßen,
Zwenn
Anzeige
AW: Dateien Download und umbenennen VBA
28.06.2019 09:08:37
Luschi
Hallo Danny,
solche automatischen Weiterleitungen sind in den META-Daten des Html-Codes hinterlegt.
Im Beispiel von 'ttps://www.mp3tag.de/dodownload.html' ist das die html-Zeile:
<meta http-equiv="refresh" content="3; URL=https://download.mp3tag.de/mp3tagv295setup.exe">
Was 'meta http-equiv=' bedeutet, steht hier: https://wiki.selfhtml.org/wiki/HTML/Kopfdaten/meta
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Dateien Download und umbenennen VBA
28.06.2019 13:43:32
Danny
Hallo Luschi,
VIELEN DANK für die Rückmeldung. Ich habe die download.html auch schon untersucht, aber leider nichts passendes gefunden! Die Datei hat über 700 Zeilen und übersteigt meine Analysefähigkeiten bei weitem.
Trotzdem vielen Dank!
AW: Dateien Download und umbenennen VBA
27.06.2019 23:56:48
onur
Du musst entweder den Pfad (wohin die Datei gespeichert wird) anpassen oder einen Ordner "Test" auf Laufwerk d: erstellen, damit meine Datei bei dir läuft.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dateien herunterladen und umbenennen mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke auf Einfügen > Modul.

  3. Füge den folgenden VBA-Code ein:

    Sub DownloadFiles()
       Dim URL As String
       Dim Pfad As String
       Dim Dateiname As String
       Dim i As Integer
    
       ' Beispielhafte Werte anpassen
       Pfad = "C:\Dein\Speicherort\" ' Ersetze mit deinem Pfad
    
       ' Iteriere durch die Zeilen in deiner Tabelle
       For i = 1 To 10 ' Passe die Schleife an die Anzahl deiner URLs an
           URL = Cells(i, 1).Value
           Dateiname = Cells(i, 2).Value
    
           ' Datei herunterladen
           URLDownloadToFile 0, URL, Pfad & Dateiname, 0, 0
       Next i
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus: Gehe zu Entwicklertools > Makros, wähle DownloadFiles und klicke auf Ausführen.

Stelle sicher, dass die URLs in Spalte 1 und die Dateinamen in Spalte 2 stehen.


Häufige Fehler und Lösungen

  • Fehler: "urldownloadtofile vba not working"

    • Überprüfe, ob die URL korrekt ist und keine umgeleitete HTML-Seite aufgerufen wird. Verwende die echte Download-URL.
  • Fehler: Heruntergeladene Dateien sind HTML-Dateien

    • Achte darauf, dass du die direkte URL zur Datei verwendest und nicht die URL zu einer HTML-Seite, die den Download auslöst.
  • Fehler: Pfad existiert nicht

    • Stelle sicher, dass der angegebene Speicherort existiert und korrekt angegeben ist.

Alternative Methoden

  • Verwendung von XMLHTTP: Du kannst auch XMLHTTP verwenden, um Downloads durchzuführen. Hier ein Beispiel:

    Sub DownloadUsingXMLHTTP()
       Dim URL As String
       Dim Pfad As String
       Dim Dateiname As String
       Dim http As Object
    
       URL = "https://example.com/datei.pdf" ' Ersetze mit deiner URL
       Pfad = "C:\Dein\Speicherort\"
       Dateiname = "downloaded_file.pdf"
    
       Set http = CreateObject("MSXML2.XMLHTTP")
       http.Open "GET", URL, False
       http.Send
    
       If http.Status = 200 Then
           Dim stream As Object
           Set stream = CreateObject("ADODB.Stream")
           stream.Type = 1 ' binär
           stream.Open
           stream.Write http.responseBody
           stream.SaveToFile Pfad & Dateiname, 2 ' 2 = Überschreiben
           stream.Close
       End If
    End Sub

Praktische Beispiele

  • Download einer Excel-Datei:

    URL = "https://www.example.com/datei.xlsx"
    Dateiname = "meine_excel_datei.xlsx"
  • Download eines PDF-Dokuments:

    URL = "https://www.example.com/dokument.pdf"
    Dateiname = "mein_dokument.pdf"

Verwende die entsprechenden URLs für deine Downloads.


Tipps für Profis

  • Batch-Downloads: Wenn du mehrere Dateien herunterladen möchtest, kannst du eine Schleife verwenden, um die URLs aus einer Excel-Liste zu lesen.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um Probleme beim Download zu identifizieren.
  • Automatisierung: Du kannst das Skript so anpassen, dass es regelmäßig Dateien herunterlädt, indem du es mit Windows Task Scheduler kombinierst.

FAQ: Häufige Fragen

1. Was ist URLDownloadToFile? URLDownloadToFile ist eine Windows-API-Funktion, um Dateien von einer URL herunterzuladen.

2. Wie kann ich sicherstellen, dass der Download klappt? Vergewissere dich, dass die URL direkt zur Datei führt und dass der Pfad, in dem du speicherst, existiert und korrekt ist.

3. Funktioniert das auch in Excel für Mac? Die hier beschriebenen VBA-Methoden sind für Windows-Versionen von Excel gedacht. Auf Mac musst du möglicherweise andere Ansätze verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige