Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
964to968
964to968
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datei aus dem Internet runterladen

Datei aus dem Internet runterladen
04.04.2008 16:22:35
webxite
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)

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei aus dem Internet runterladen
04.04.2008 20:04:00
MichaV
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.

Anzeige
AW: Datei aus dem Internet runterladen
05.04.2008 06:34:36
webxite
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

Anzeige
AW: Datei aus dem Internet runterladen
05.04.2008 07:15:54
Luschi
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

...d.h., du brauchst für (je)den Download...
05.04.2008 17:15:00
Luc:-?
...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 :-?

Anzeige
AW: ...d.h., du brauchst für (je)den Download...
05.04.2008 17:38:00
webxite
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.

AW: Datei aus dem Internet runterladen
05.04.2008 19:07:00
Volti
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige