Date auf Webserver öffnen

13/08/2012 - 23:35 von Detlev Wenzel | Report spam
Hallo

Ich will eine *.csv Datei auf einem Webserver (meiner Fritzbox) öffnen und
bin mir nicht sicher wie ich das am besten mache.
Mein jetziger Ansatz ist zur Datei über das Internetcontrol-Control zu
navigieren und in .BeforeNavigate durch URLDownloadToFile zu behandeln.
Nun will ich aber die Datei nicht speichern, sondern deren Inhalt in eine
(String) Variable kopieren.
So brauche ich eigentlich URLDownloadToString oder so àhnlich.

Habt ihr einen Tip für mich wie ich den Inhalt der Datei in eine Variable
bekomme? Eine Lösung ganz ohne I-Net-Control wàre auch sehr willkommen.

TIA

PS.: Der bisherige Code:
Option Explicit
' benötigte API-Deklarationen
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
Private Sub Form_Load()

Dim AListeUrl As String
Dim AlisteInhalt As String


AListeUrl="http://192.168.1.225/cgi-bin/webcm?getpage=../html/de/FRITZ!Box_Anrufliste.csv"
WB.Navigate AListeUrl

End Sub

' Die Abfrage umgehen:
'http://www.vbarchiv.net/tipps/tipp_...ialog.html

Private Sub WB_BeforeNavigate2(ByVal pDisp As Object, _
URL As Variant, Flags As Variant, TargetFrameName As Variant, _
PostData As Variant, Headers As Variant, Cancel As Boolean)

Dim sExt As String

' Datei-Extension ermitteln
If InStr(URL, ".") > 0 Then
sExt = LCase$(Mid$(URL, InStrRev(URL, ".")))
End If

' Je nach Dateityp verschiedene Aktionen ausführen
Select Case sExt
Case ".csv"
' Datei autom. downloaden
Cancel = True

' Datei ins Anwendungsverzeichnis speichern
Dim sLocalFile As String
sLocalFile = App.Path & "\" & Mid$(URL, InStrRev(URL, "/") + 1)

' Download starten und warten, bis beendet
If URLDownloadToFile(0, URL, sLocalFile, 0, 0) = 0 Then
MsgBox "Download erfolgreich!"
End If

Case Else
' alle anderen Links direkt ausführen
End Select
End Sub
 

Lesen sie die antworten

#1 Detlev Wenzel
14/08/2012 - 15:10 | Warnen spam
Detlev "Ingrid" Wenzel schrieb:

Ich will eine *.csv Datei auf einem Webserver (meiner Fritzbox) öffnen und
bin mir nicht sicher wie ich das am besten mache. [snip ...]



Da habe ich mit den Internet Controls wohl auf das falsche Pferd gesetzt.
Nochmal googeln und etwas Hirnschmalz hat dann eine Lösung gebracht.
Den (recht kurzen Code) hànge ich mal an.
Gruß


Option Explicit
' Benötigt das Internet Transfer Control

Private Sub Form_Load()
Dim CallerListUrl As String
Dim Retval As String
CallerListUrl "http://192.168.1.225/cgi-bin/webcm?getpage=../html/de/FRITZ!Box_Anrufliste.csv"
Retval = GetCaller(CallerListUrl)
MsgBox Retval
End Sub

Private Function GetCaller(CallerListUrl) As String
' Erwartet einen Url und liefert den Dateiinhalt in
' einem String zurück.
On Error GoTo Hell
Inet1.Cancel
Inet1.Protocol = icHTTP
Inet1.AccessType = icDirect
GetCaller = Inet1.OpenURL(Trim$(CallerListUrl), icString)
On Error GoTo 0
Exit Function
Hell:
Inet1.Cancel
MsgBox "ERROR: " & Err.Description, vbCritical
Exit Function
End Function

Ähnliche fragen