Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

Datei aus dem Internet runterladen

Betrifft: Datei aus dem Internet runterladen von: webxite
Geschrieben am: 04.04.2008 16:22:35

Hallo Liebe Excel Spezis,

ich habe folgendes Problem. Ich will eine die ca. 5 MB groß ist downloaden. Mein Problem jetzt. Um die Datei runter zu laden muss man sich einloggen, was auch funktionert. Die Datei kann man aber nur mit rechtsklick "speichern unter" abspeichern. Bei der Datei Handelt es sich um eine Excel Datei. Diese soll direkt ins Temp verzeichnis gedownloaded werden.

Habe schon vieles im Netz gefunden haber funktionieren tut keins davon.

Ich hoffe ihr könnt mir weiterhelfen.

Diesen Code habe ich in einem Modul gespeichert.

'API-Deklarationen:
Private Declare Sub InternetCloseHandle Lib "wininet.dll" ( _
ByVal hInet As Long)

Private Declare Function InternetOpenA Lib "wininet.dll" ( _
ByVal sAgent As String, ByVal lAccessType As Long, _
ByVal sProxyName As String, ByVal sProxyBypass As String, _
ByVal lFlags As Long) As Long

Private Declare Function InternetOpenUrlA Lib "wininet.dll" ( _
ByVal hOpen As Long, ByVal sUrl As String, _
ByVal sHeaders As String, ByVal lLength As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long

Private Declare Sub InternetReadFile Lib "wininet.dll" ( _
ByVal hFile As Long, ByVal sBuffer As String, _
ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long)

  

Betrifft: AW: Datei aus dem Internet runterladen von: MichaV
Geschrieben am: 04.04.2008 20:04:00

Hallo,

Mein Problem jetzt. Um die Datei runter zu laden muss man sich einloggen, was auch funktionert.
..und warum ist es ein Problem, wenn es funktioniert?

Was genau geht nicht? Ist die Datei zu groß, liegts am Rechtsklick, am Code? Welcher Code? Nur die API-Deklarationen bringen ja nun nichts. Warum muß Du die Datei mit Excel runterladen, wenn es auch mit der Maus geht? Wenn Du den Link zu der Datei in der Browser- Adressleiste eingibts, wird die Datei auch runtergeladen, da brauchst Du keine Maus. Hm, also, was nun? Bitte Problemstellung genauer beschreiben und ggf. etwas mehr Code zeigen.

Gruß- Micha

PS: Rückmeldung wäre nett.


  

Betrifft: AW: Datei aus dem Internet runterladen von: webxite
Geschrieben am: 05.04.2008 06:34:36

Es liegt am Code und an dem Rechtsklick.

Ich weiß das die Deklarationen alleine nichts bringen.

Es soll eben nicht manuell geschehen sondern automatisch und wenn ich den Link in den Browser eingeben kann ich die Datei nicht einkauf runterladen da sie im geschützten bereich liegt. Aber das Problem das ich habe ist ich brauche den Code mit dem Rechtsklick.

Option Compare Database
Option Explicit

Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Const INTERNET_FLAG_EXISTING_CONNECT = &H20000000

Private Declare

Function InternetOpen Lib "wininet.dll" Alias _ 
    "InternetOpenA" (ByVal lpszAgent As String, ByVal dwAccessType As Long, _ 
                     ByVal lpszProxyName As String, _ 
                     ByVal lpszProxyBypass As String, _ 
                     ByVal dwFlags As Long) As Long 
Private Declare 

Function InternetOpenUrl Lib "wininet.dll" Alias _ 
    "InternetOpenUrlA" (ByVal hInternetSession As Long, _ 
                        ByVal lpszUrl As String, _ 
                        ByVal lpszHeaders As String, _ 
                        ByVal dwHeadersLength As Long, _ 
                        ByVal dwFlags As Long, _ 
                        ByVal dwContext As Long) As Long 
Private Declare 

Function InternetCloseHandle Lib "wininet.dll" _ 
    (ByVal hInet As Long) As Integer 
Private Declare 

Function InternetReadFile Lib "wininet.dll" _ 
    (ByVal hFile As Long, ByVal lpBuffer As String, _ 
     ByVal dwNumberOfBytesToRead As Long, _ 
     lNumberOfBytesRead As Long) As Integer 

Sub CopyURLToFile(ByVal URL As String, ByVal FileName As String) 
    Dim hInternetSession As Long 
    Dim hUrl As Long 
    Dim DatNum As Integer 
    Dim ByteAnz As Long 
    Dim Buffer As String * 4096 
    Dim DatInhalt As String 
    On Error GoTo Fehler 

    If Len(URL) = 0 Or Len(FileName) = 0 Then 
        MsgBox "Fehlende URL" 
        Exit 

Sub 
    End If 
    ' open an Internet session, and retrieve its handle 
    hInternetSession = InternetOpen("dummy", INTERNET_OPEN_TYPE_PRECONFIG, _ 
                                    vbNullString, vbNullString, 0) 
    If hInternetSession = 0 Then 
        MsgBox "Fehler bei InternetOpen" 
        Exit 

Sub 
    End If 
    ' open the file and retrieve its handle 
    hUrl = InternetOpenUrl(hInternetSession, URL, vbNullString, 0, _ 
                           INTERNET_FLAG_EXISTING_CONNECT, 0) 
    If hUrl = 0 Then 
        If hInternetSession Then InternetCloseHandle hInternetSession 
        MsgBox "Fehler bei InternetOpenUrl" 
        Exit 

Sub 
    End If 
    ' evtl vorhandene Datei löschen 
    On Error Resume Next 
    Kill FileName 
    On Error GoTo Fehler 
    ' Daten sammeln 
    Do 
        InternetReadFile hUrl, Buffer, Len(Buffer), ByteAnz 
        If ByteAnz = 0 Then Exit Do 
        DatInhalt = DatInhalt & Left(Buffer, ByteAnz) 
    Loop 
    ' Datei schreiben 
    DatNum = FreeFile 
    Open FileName For Output As #DatNum 
    Print #DatNum, DatInhalt; 
    Close #DatNum 
Fehler: 
    If hUrl Then InternetCloseHandle hUrl 
    If hInternetSession Then InternetCloseHandle hInternetSession 
    If Err Then MsgBox "Fehler " & Err.Number & ":" & Err.Description 
End 

Sub 

Sub testen() 

    
'CopyURLToFile "http://www.meineseite.de/test.xls" _




################# Den Code habe ich von Office-Loesungen.de



  

Betrifft: AW: Datei aus dem Internet runterladen von: Luschi
Geschrieben am: 05.04.2008 07:15:54

Hallo webxite,

der Vba-Code macht genau das, was er soll, wenn Du die Start-Routine mit 2 Parametern aufrufst.
1. Parameter: I-Net-Adresse
2. Parameter: lokale Adresse

Sub testen()
   CopyURLToFile "http:/ _
/www.herber.de/bbs/user/51279.xls", "f:\daten\hhh.xls"

End Sub



Gruß von Luschi
aus klein-Paris


  

Betrifft: ...d.h., du brauchst für (je)den Download... von: Luc:-?
Geschrieben am: 05.04.2008 17:15:45

...noch eine Aufrufroutine wie sie Luschi verwendet hat (testen()), weil man keine parametrierte Routine direkt manuell aufrufen kann. Mit anderen Worten: Vollautomatisierung in Gänze wird schwierig!
Gruß Luc :-?


  

Betrifft: AW: ...d.h., du brauchst für (je)den Download... von: webxite
Geschrieben am: 05.04.2008 17:38:01

Ich werde es gleich ausprobieren ob es klappt und geben euch dann Rückmeldung.

Schonmal vielen Dank für die Vorschläge und das Interesse.


  

Betrifft: AW: Datei aus dem Internet runterladen von: Volti
Geschrieben am: 05.04.2008 19:07:08

Hallo webxite,

so einen ähnlichen code habe ich auch mal ausprobiert. Analog Deines Beispiels erhielt ich zwar ein handle für "Internetsession", aber das handle für "hUrl" war immer Null, was immer ich ausprobiert hatte.
Hab' dann erst mal aufgegeben.

Ist das bei Dir auch so? Denn ansonsten sieht es ja so aus, als wenn es das wäre.....

viele Grüße aus Freigericht
Karl-Heinz


 

Beiträge aus den Excel-Beispielen zum Thema "Datei aus dem Internet runterladen "