Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA für Download von Excel File

Forumthread: VBA für Download von Excel File

VBA für Download von Excel File
30.01.2021 13:39:01
Excel
Hallo zusammen,
ich bin noch VBA Anfänger und habe eine Frage bzgl. des Downloads einer Excel Datei von einer Website.
Ich möchte dafür den unten aufgeführten Code verwenden, welchen ich bereits mit anderen Dokumentationen abgeglichen habe. An sich läuft der Code auch durch, jedoch downloaded er leider nicht das Excel File des eingetragenen Links. Hat jemand eine Idee, wo hier der Fehler liegen könnte?
Herzlichen Dank und viele Grüße
Tim

Option Explicit
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
Sub download_file()
Dim downloadStatus As Variant
Dim url As String
Dim destinationFile_local As String
url = "https://www.ishares.com/de/privatanleger/de/produkte/251382/ishares-msci-world-minimum- _
volatility-ucits-etf/1478358465952.ajax?fileType=csv&fileName=IQQ0_holdings&dataType=fund"
destinationFile_local = "C:\Users\Tim\Documents..."
downloadStatus = URLDownloadToFile(0, url, destinationFile_local, 0, 0)
If downloadStatus = 0 Then
MsgBox ("Downloaded Successfully")
Else
MsgBox ("Download failed")
End If
End Sub

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA für den Download von Excel-Dateien


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei von einer URL herunterzuladen, kannst du den folgenden VBA-Code verwenden. Dieser nutzt die Funktion URLDownloadToFile, die in der urlmon-Bibliothek enthalten ist.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Option Explicit
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

Sub download_file()
    Dim downloadStatus As Variant
    Dim url As String
    Dim destinationFile_local As String
    url = "https://www.example.com/data.csv" ' Ersetze dies mit deiner URL
    destinationFile_local = "C:\Users\DeinBenutzername\Documents\data.csv" ' Zielort anpassen
    downloadStatus = URLDownloadToFile(0, url, destinationFile_local, 0, 0)

    If downloadStatus = 0 Then
        MsgBox ("Download erfolgreich")
    Else
        MsgBox ("Download fehlgeschlagen")
    End If
End Sub
  1. Passe die url und destinationFile_local Variablen an deine Bedürfnisse an.
  2. Führe das Makro aus, um die Datei herunterzuladen.

Häufige Fehler und Lösungen

  • Fehler: Download fehlgeschlagen
    Überprüfe, ob die URL korrekt ist und ob die Datei tatsächlich heruntergeladen werden kann. Teste den Link im Browser.

  • Fehler: Zugriffsverweigerung
    Stelle sicher, dass du Schreibrechte für das Zielverzeichnis hast. Wähle einen anderen Speicherort, der öffentlich zugänglich ist.

  • Datei wird nicht im gewünschten Format heruntergeladen
    Achte darauf, dass die URL die Datei im richtigen Format anbietet (z. B. CSV oder XLSX).


Alternative Methoden

Falls die URLDownloadToFile-Funktion nicht funktioniert, kannst du auch andere Ansätze ausprobieren:

  1. HTTP-Anfragen mit MSXML: Du kannst die MSXML2.ServerXMLHTTP-Bibliothek verwenden, um Dateien herunterzuladen.
  2. Power Query: In neueren Excel-Versionen kannst du auch Power Query verwenden, um Daten aus dem Web zu importieren. Gehe zu Daten > Daten abrufen > Aus dem Web.

Praktische Beispiele

Hier sind einige Beispiele für das Herunterladen von Dateien mit VBA:

  • CSV-Datei von Comdirect:

    url = "https://www.comdirect.de/..."
    destinationFile_local = "C:\Users\DeinBenutzername\Documents\comdirect_data.csv"
  • Excel-Datei von einer anderen Quelle:

    url = "https://www.example.com/file.xlsx"
    destinationFile_local = "C:\Users\DeinBenutzername\Documents\file.xlsx"

Tipps für Profis

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um spezifische Fehlermeldungen anzuzeigen.
  • Verwendung von Schleifen: Wenn du mehrere Dateien herunterladen möchtest, kannst du Schleifen verwenden, um den Code zu optimieren.
  • Automatisierung: Überlege, ob du den Download in regelmäßigen Abständen automatisieren möchtest, indem du die Makros mit Excel-Planung verknüpfst.

FAQ: Häufige Fragen

1. Frage
Wie kann ich den Download von Excel-Dateien automatisieren?
Antwort: Du kannst die VBA-Makros in Kombination mit dem Windows Task Scheduler verwenden, um den Download in festgelegten Intervallen auszuführen.

2. Frage
Kann ich auch von einer geschützten Website herunterladen?
Antwort: Ja, du kannst die MSXML-Bibliothek verwenden und Authentifizierungsheader hinzufügen, um dich bei geschützten Websites anzumelden.

3. Frage
Was mache ich, wenn mein Antivirenprogramm den Download blockiert?
Antwort: Überprüfe die Einstellungen deines Antivirenprogramms und füge gegebenenfalls die Excel-Anwendung oder die Datei-URL zur Ausnahmeliste hinzu.

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